2011-05-14 14 views
37

NSData और बेस 64 स्ट्रिंग के बीच रूपांतरण करने का सबसे आसान और तेज़ कोड क्या है? मैंने एसओ पर समाधानों का एक समूह पढ़ा है और ज्यादातर वे एक और कक्षा आदि जोड़ने में शामिल हैं। मुझे here का एक अच्छा समाधान मिला लेकिन यह बहुत जटिल है।एनएसडीटा और बेस 64 स्ट्रिंग्स के बीच कनवर्ट करना

+6

सभी उचित समाधान मैट गैलाघर पोस्ट से जुड़े कुछ दिखने जा रहे हैं। –

+0

यहां गैलाघर की लाइब्रेरी ढूंढने के लिए है जहां लोगों ने – bobobobo

+0

को लिंक किए बिना रहस्यमय रूप से '[NSData डेटाफ्रमबेस 64String]' का उपयोग किया है, कुछ समझने योग्य कारणों से ऐप्पल ने कभी भी बेस 64 के लिए "मूल" समर्थन प्रदान नहीं किया है, लेकिन सभी तृतीय पक्ष किट काफी समान हैं। बस एक उठाओ। –

उत्तर

53

the page you linked और download the provided NSData+Base64 files पर निष्कर्ष अनुभाग तक स्क्रॉल करें। यह अब तक का सबसे अच्छा समाधान है और उपयोग करने के लिए अविश्वसनीय रूप से आसान है। यदि आप कोको के बारे में कुछ भी सीख सकते हैं, तो आप उस परियोजना का उपयोग करना सीख सकते हैं।


उदाहरण

NSString *originalString = [NSString stringWithFormat:@"test"]; 
NSData *data = [NSData dataFromBase64String:originalString]; 
NSLog([data base64EncodedString]); 

ऊपर बेस 64 के लिए यह एक सामान्य unencoded स्ट्रिंग को बदलने और वापस के बाद बाहर मूल स्ट्रिंग प्रिंट होगा।

+2

मैंने दो डाउनलोड किए हैं, तो क्या मुझे उस प्रोजेक्ट को मेरे साथ जोड़ने की ज़रूरत है या क्या मैं बस एनएसडीटा + बेस 64 खींच सकता हूं? – aherlambang

+2

आप अपनी परियोजना में दो फाइलें जोड़ना चाहते हैं। आम तौर पर जब आप 'NSData + Base64' जैसे नाम देखते हैं, तो आपके सिर के माध्यम से चलने वाली पहली चीज़ यह है कि यह 'एनएसडीटा' कक्षा पर एक श्रेणी है। दूसरे शब्दों में, आप केवल 'एनएसडीटा' का उपयोग करके इन नई विधियों को कॉल करते हैं, कुछ नई 'बेस 64' कक्षा नहीं। –

+1

मुझे विश्वास है कि, आपको अभी भी श्रेणी आयात करने की आवश्यकता है। व्यक्तिगत रूप से, मैं इसे अपने प्रीकंपिल्ड हेडर में डालने की अनुशंसा करता हूं ताकि आप अपनी परियोजना में कहीं से भी 'एनएसडीटा' पर विधियों का उपयोग कर सकें। –

1

मैं के रूप में SUDZC द्वारा प्रदान की इस एक ही कक्षा का उपयोग कर समाप्त हो गया

कार्यान्वयन था आसान पहले मैं एक आयात

#import "NSData+Base64.h" 

तो मैं अपने डेटा फोन करने में सक्षम था।

+0

मुझे आईएसटी 'NSData + Base64.h' फ़ाइल नहीं मिली है। – Martin

+1

@ मार्टिन मैंने [sudzc] (http://www.sudzc.com) lib द्वारा उत्पन्न कक्षाओं का उपयोग किया, यह आपके लिए यह कक्षा बनाता है कि आप अपनी कार्यान्वयन फ़ाइल (.m) – SeeCoolGuy

0

या आप (काफी नया) CryptoCompatibility नमूना परियोजना के लिए एक बार देख ले सकता है, मुझे लगता है कि बेस 64 ऑपरेशन के लिए एक आवरण वर्ग है। यह एक मैकोज़ नमूना है लेकिन यह लाइब्रेरी libresolve.dylib का उपयोग करता है, मुझे लगता है कि आईओएस पर भी उपलब्ध है (इसे कम से कम आईओएस 7 में देखें)।

40

आईओएस 7, NSData के रूप में अब सीधे नई विधियों -base64EncodedDataWithOptions: और -base64EncodedStringWithOptions: के साथ इस कार्यक्षमता प्रदान करता है। (विकल्प आपको यह निर्दिष्ट करने देते हैं कि स्ट्रिंग लाइन-लपेटा गया है, ईमेल से निपटने के लिए बेहतर है, और उपयोगकर्ता के सामने प्रदर्शित डिस्प्ले।)

29

आपको किसी भी कस्टम कार्यान्वयन की आवश्यकता नहीं है। एनएसडीटा से बेस 64 बनाना अन्य उत्तरों में दिखाया गया है। विपरीत दिशा है। बेस 64 स्ट्रिंग से NSData तक:

NSString *base64Encoded = @"some base64 string"; 
NSData *nsdataFromBase64String = [[NSData alloc] initWithBase64EncodedString:base64Encoded options:0]; 
+6

में आयात कर सकते हैं आईओएस 7/ओएसएक्स 10.9 और यह यहां पेश किए गए सबसे अच्छे समाधान को हाथ से नीचे रखता है। [यहां प्रलेखन] (https://developer.apple.com/library/ios/documentation/cocoa/Reference/Foundation/Classes/NSData_Class/index.html#//apple_ref/occ/instm/NSData/initWithBase64EncodedString:options :) । – jonstaff

+0

यह स्वीकार्य उत्तर होना चाहिए ... – csblo

+0

मैं मानता हूं कि यह स्वीकार्य उत्तर होना चाहिए। – Wayne