2010-04-16 13 views
43

मैं एक iPhone एप्लिकेशन बनाने रहा हूँ और निम्नलिखित के साथ फंस:NSData स्ट्रिंग के रूप प्रदर्शित करने के लिए

unsigned char hashedChars[32]; 
CC_SHA256([inputString UTF8String], [inputString lengthOfBytesUsingEncoding:NSASCIIStringEncoding], hashedChars); 
NSData *hashedData = [NSData dataWithBytes:hashedChars length:32]; 
NSLog(@"hashedData = %@", hashedData); 

लॉग की तरह दिखा रहा है:

hashedData = <abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh> 
  • टिप्पणी hashedData NSData, NSString नहीं है

लेकिन मुझे हैशडेटा को एनएसएसटींग में परिवर्तित करने की आवश्यकता है जो इस तरह दिखता है:

NSString *someString = @"abcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefghabcdefgh"; 

तो मूल रूप से परिणाम हैशडेटा की तरह होना चाहिए सिवाय इसके कि मुझे कोण ब्रैकेट और रिक्त स्थान के बीच में नहीं चाहिए।

उत्तर

22

मैं पाया है समाधान और मुझे लगता है कि मैं बेवकूफ किया जा रहा था।

मूल रूप से सभी मैं करना पड़ा है:

NSString *someString = [NSString stringWithFormat:@"%@", hashedData]; // NSData लिए मजबूर हो जाते हैं NSString

एक बार फिर, सब जो मदद करने की कोशिश करने के लिए धन्यवाद बहुत सराहना की।

+1

अरे, आपने कुछ स्ट्रिंग में वापस NSData में डेटा कैसे परिवर्तित किया? – mukaissi

2

NSCharacterSet को परिभाषित करें जिसमें अपमानजनक वर्ण शामिल हैं, फिर-स्ट्रिंगबीट्रिमिंग कैरेक्टर्स इनसेट: का उपयोग करके अपनी स्ट्रिंग को फ़िल्टर करें।

+0

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

+0

इसके बारे में क्षमा करें, मैंने आपकी मूल पोस्ट से माना था कि आपके पास पहले से ही एक स्ट्रिंग थी। –

64

NSString initWithData का उपयोग करें: एन्कोडिंग: विधि। अपनी टिप्पणी :)

उस मामले में करने के लिए प्रतिक्रिया करने के लिए

NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSASCIIStringEncoding]; 

(संपादित करें, जोशुआ की जवाब मदद करता है:

NSCharacterSet *charsToRemove = [NSCharacterSet characterSetWithCharactersInString:@"< >"]; 
NSString *someString = [[hashedData description] stringByTrimmingCharactersInSet:charsToRemove]; 
+0

http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#jumpTo_67 –

+1

हाय नूह, आपके उत्तर के लिए धन्यवाद। मैंने वास्तव में कोशिश की है लेकिन यह काम नहीं करता है। जब मैं एनएसएलओजी से प्रिंट करता हूं, तो यह 'यू × §v' जैसे गैर-असीसी अक्षरों की एक स्ट्रिंग दिखा रहा है, मुझे बस अपने मूल प्रश्न में उल्लिखित कोण ब्रैकेट और रिक्त स्थान की आवश्यकता है। – topace

+1

stringByTrimmingCharactersInSet केवल सिरों से हटा देता है, इसलिए रिक्त स्थान मध्य में मौजूद होगा। यह केवल कोण ब्रैकेट को हटा देगा। – lilbyrdie

संबंधित मुद्दे