सवाल उद्देश्य सी में एनएसडीटा को एनएसएसटींग में कनवर्ट करना


मैं एनएसडीटा को एनएसएसटींग में परिवर्तित करना चाहता हूं..यह करने का सबसे अच्छा तरीका क्या है?

मैं इस कोड का उपयोग कर रहा हूं लेकिन अंतिम स्ट्रिंग शून्य हो जाती है

NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);

जब मैं कंसोल देखता हूं तो यह शून्य प्रिंट करेगा।


78
2018-06-20 13:33


मूल


एनएसएलओजी डेटा। - zaph
यह डेटा दिखाएगा - Mehul Mistri
@Nik .... @Marvin: क्या आप एक ही व्यक्ति हैं या एक ही लैन के भीतर से? मुझे आश्चर्य है, तुम्हारा क्यों identicons बिल्कुल वही हैं। - vikingosegundo
स्ट्रिंग क्या है? अगर आप मिल रहे हैं nil तो मुझे लगता है कि आपका डेटा वैध utf8 स्ट्रिंग नहीं है? - deanWombourne
@vikingosegundo अपनी तरह की जानकारी के लिए मैं nik नहीं जानता ... - Mehul Mistri


जवाब:


के लिए दस्तावेज़ NSString कहते हैं

https://developer.apple.com/documentation/foundation/nsstring/1416374-initwithdata

रिटर्न वैल्यू एन एनएसएसटींग ऑब्जेक्ट   बाइट्स को परिवर्तित करके शुरू किया गया   यूनिकोड वर्णों का उपयोग कर डेटा   एन्कोडिंग। लौटाई वस्तु हो सकती है   मूल रिसीवर से अलग।   प्रारंभ होने पर शून्य वापस आता है   किसी कारण से विफल रहता है (उदाहरण के लिए यदि   डेटा के लिए वैध डेटा का प्रतिनिधित्व नहीं करता है   एन्कोडिंग)।

यह जांचने के लिए कि क्या यह आपकी समस्या हल करता है, आपको अन्य एन्कोडिंग का प्रयास करना चाहिए

 // The following constants are provided by NSString as possible string encodings.
enum {
   NSASCIIStringEncoding = 1,
   NSNEXTSTEPStringEncoding = 2,
   NSJapaneseEUCStringEncoding = 3,
   NSUTF8StringEncoding = 4,
   NSISOLatin1StringEncoding = 5,
   NSSymbolStringEncoding = 6,
   NSNonLossyASCIIStringEncoding = 7,
   NSShiftJISStringEncoding = 8,
   NSISOLatin2StringEncoding = 9,
   NSUnicodeStringEncoding = 10,
   NSWindowsCP1251StringEncoding = 11,
   NSWindowsCP1252StringEncoding = 12,
   NSWindowsCP1253StringEncoding = 13,
   NSWindowsCP1254StringEncoding = 14,
   NSWindowsCP1250StringEncoding = 15,
   NSISO2022JPStringEncoding = 21,
   NSMacOSRomanStringEncoding = 30,
   NSUTF16StringEncoding = NSUnicodeStringEncoding,
   NSUTF16BigEndianStringEncoding = 0x90000100,
   NSUTF16LittleEndianStringEncoding = 0x94000100,
   NSUTF32StringEncoding = 0x8c000100,
   NSUTF32BigEndianStringEncoding = 0x98000100,
   NSUTF32LittleEndianStringEncoding = 0x9c000100,
   NSProprietaryStringEncoding = 65536
};

46
2018-06-20 13:51



NSASCIIStringEncoding - John Erck
मैंने एलएलडीबी में संख्याओं का इस्तेमाल किया। अन्यथा यह काम नहीं किया। धन्यवाद। - pandaren codemaster
नोट: यदि आप अपने एन्कोडिंग प्रकार से अनिश्चित हैं या यदि यह हमेशा समान नहीं होता है, तो यह दृष्टिकोण आपके लिए अच्छा होगा: stackoverflow.com/a/50691430/2057171 - Albert Renshaw


नीचे कोड का प्रयोग करें।

NSString* myString;
myString = [[NSString alloc] initWithData:nsdata encoding:NSASCIIStringEncoding];

79
2018-06-20 13:35



यह मुझे उचित स्ट्रिंग नहीं देगा - Mehul Mistri
क्या आपने जांच की ? - Jhaliya
यदि नहीं, तो यह नहीं है NSASCIIStringEncoding। देख फेलिप जवाब अन्य एन्कोडिंग के लिए - vikingosegundo


-[NSString initWithData:encoding] वापस होगा nil यदि निर्दिष्ट एन्कोडिंग डेटा के एन्कोडिंग से मेल नहीं खाता है।

सुनिश्चित करें कि आपका डेटा यूटीएफ -8 में एन्कोड किया गया है (या डेटा के लिए उपयुक्त जो भी एन्कोडिंग के लिए NSUTF8StringEncoding बदलें)।


15
2018-06-20 13:40



मैंने एनएसडीएटीए में एक छवि को परिवर्तित कर दिया और फिर एनएसयूटीएफ 8 स्टिंगएन्कोडिंग का उपयोग करके एनएसडीटा को स्ट्रिंग में परिवर्तित कर दिया। लेकिन यह शून्य दिखा रहा है। - Ramakrishna


NSString *string = [NSString stringWithUTF8String:[Data bytes]];

6
2018-05-26 05:44



यह वर्णन के रूप में काम नहीं करता है [[एनएसएसटींग आवंट] initWithData: हेड एन्कोडिंग: NSUTF8StringEncoding] काम करता है - Ryan Heitner


-[NSString initWithData:encoding] आपका मित्र है लेकिन केवल तभी जब आप उचित एन्कोडिंग का उपयोग करते हैं।


2
2018-01-17 07:01





उद्देश्य सी में:

NSData *tmpData;
NSString *tmpString = [NSString stringWithFormat:@"%@", tmpData];
NSLog(tmpString)

1
2018-04-19 17:03





डेटा के एन्कोडिंग प्रकार की अनिश्चितता? कोई बात नहीं!

संभावित एन्कोडिंग प्रकारों को जानने की आवश्यकता के बिना, जिसमें गलत एन्कोडिंग प्रकार आपको शून्य / शून्य देंगे, इसमें आपके सभी आधार शामिल होंगे:

NSString *dataString = [data base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn];

किया हुआ!




नोट: इस स्थिति में यह किसी भी तरह विफल रहता है, आप अपने NSData को अनपैक कर सकते हैं NSKeyedUnarchiver, फिर repack (id)unpacked फिर से NSKeyedArchiver, और एनएसडीएटा फॉर्म बेस 64 एन्कोडेबल होना चाहिए। 

id unpacked = [NSKeyedUnarchiver unarchiveObjectWithData:data];
data = [NSKeyedArchiver archivedDataWithRootObject:unpacked];

1
2018-06-05 03:08





उद्देश्य सी:

[[NSString alloc] initWithData:nsdata encoding:NSASCIIStringEncoding];

स्विफ्ट:

let str = String(data: data, encoding: NSUTF8StringEncoding)

0
2018-03-27 13:41





स्विफ्ट:

let jsonString = String(data: jsonData, encoding: .ascii)

या .utf8 या जो भी एन्कोडिंग उचित है


0
2017-08-01 11:50