आईओएस 7+ में बेस 64 डिकोडिंग


184

मैंने (इनकोडिंग NSString) टेक्स्ट का उपयोग किया हैNSData क्लास न्यू एपीआई है जो कि iOS7 में जोड़ा गया है।

इसका उपयोग करना

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding;  

यहाँ मेरा कोड है

NSString *base64EncodedString = [[myText dataUsingEncoding:NSUTF8StringEncoding] base64EncodedStringWithOptions:0];

NSLog(@"%@", base64EncodedString);

मैं इसे डिकोड करना चाह रहा हूं


7
m_EncodeText: कृपया बंद करो
कार्ल Veazey

1
जहां पाया है base64EncodedStringWithOptions:?
user2159978

@ user2159978 यह सेब डॉक्स में वहाँ developer.apple.com/library/ios/documentation/cocoa/reference/...
संदीप खाड़े

ऐसा लगता है कि यह तब होता है जब मैं मैक ओएस कंसोल एप्लिकेशन लक्ष्य का उपयोग करता हूं। या sdk / mac os टारगेट का पुराना संस्करण
user2159978

जवाबों:


438

स्विफ्ट 3+

let plainString = "foo"

एन्कोडिंग

let plainData = plainString.data(using: .utf8)
let base64String = plainData?.base64EncodedString()
print(base64String!) // Zm9v

डिकोडिंग

if let decodedData = Data(base64Encoded: base64String!),
   let decodedString = String(data: decodedData, encoding: .utf8) {
  print(decodedString) // foo
}

स्विफ्ट <३

let plainString = "foo"

एन्कोडिंग

let plainData = plainString.dataUsingEncoding(NSUTF8StringEncoding)
let base64String = plainData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
print(base64String!) // Zm9v

डिकोडिंग

let decodedData = NSData(base64EncodedString: base64String!, options: NSDataBase64DecodingOptions(rawValue: 0))
let decodedString = NSString(data: decodedData, encoding: NSUTF8StringEncoding)
print(decodedString) // foo

उद्देश्य सी

NSString *plainString = @"foo";

एन्कोडिंग

NSData *plainData = [plainString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [plainData base64EncodedStringWithOptions:0];
NSLog(@"%@", base64String); // Zm9v

डिकोडिंग

NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];
NSLog(@"%@", decodedString); // foo 


1
मुझे नहीं लगता कि यह कोड साफ है। मुझे चेतावनी मिलती है: "असंगत सूचक प्रकार NSData की अभिव्यक्ति के साथ NNSTring को आरंभीकृत कर रहे हैं"
ड्रोबो

9
@drlobo आपके पास base64EncodedDataWithOptions टाइप करना होगा: base64EncodedStringWithOptions के बजाय:
Bach

4
इसके लिए धन्यवाद। कुछ मैंने अभी पाया: एक निरंतर kNilOptions0 के बराबर है जो विकल्पों के लिए 0 का उपयोग करने की तुलना में यकीनन अधिक पठनीय है।
एडम वाइट

2
@AdamWaite kNilOptionsको परिभाषित किया गया है, MacTypes.hजो एक विरासत OSX हैडर है, इसलिए मुझे इसका उपयोग करना पसंद नहीं है, क्योंकि मुझे लगता है कि हेडर को iOS SDK से पूरी तरह हटा दिया जाना चाहिए। वैसे भी, आपके पास यह कहने में एक बिंदु है कि यह बहुत पठनीय है, इसलिए इसका उपयोग करने के लिए स्वतंत्र महसूस करें।
गैब्रिएल पेट्रोनेला

2
अगर किसी को एक कोशिश मिल रही है NSDataBase64DecodingOptions.IgnoreUnknownCharactersमैं इस मुद्दे पर था
spaceMonkey

81

यदि आप फॉलबैक कोड लिखना चाहते हैं, तो बेस 64 से डिकोडिंग आईओएस में बहुत पहले से मौजूद है NSURL:

NSURL *URL = [NSURL URLWithString:
      [NSString stringWithFormat:@"data:application/octet-stream;base64,%@",
           base64String]];

return [NSData dataWithContentsOfURL:URL];

12
मैं इस जवाब से पूरी तरह प्रभावित हूं। वर्षों से मैं एक स्ट्रिंग को डिकोड करने के लिए कोड की कुछ हास्यास्पद मात्रा का उपयोग कर रहा हूं, और सभी के साथ एक 2 लाइन समाधान था।
अलबेबे

यह कमाल का है! हैकी, लेकिन भयानक :)
मीका मज़ाहेरी

मैंने कभी नहीं सोचा कि यह इतना आसान है! धन्यवाद!!
कुमार सी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.