2012-03-27 5 views
6

, मेरे पास है की तरह नीचेआईओएस कन्वर्ट कैसे इमोजी आइकनों में हेक्साडेसिमल मान परिवर्तित करने के लिए हेक्स मूल्य

NSString *myVal = @"1F61E"; 

मैं कैसे इमोजी charrcaters के रूप में यह प्रदर्शित करने के लिए इस पाठ में बदल सकते हैं एक स्ट्रिंग?

मैं पाया है मूल्य from this link कृपया मुझे पता है, मैं सच में अटक-अप इस मुद्दे

Updated

NSString *utf8String1 = @"1F61E"; 
NSString *a = [self convert:utf8String1]; 
NSLog(@"%@ &&&&&&&&&&&&&&&&&&&&&",a); 


-(NSString*)convert:(NSString*)decoded{ 

    unichar unicodeValue = (unichar) strtol([decoded UTF8String], NULL, 16); 
    char buffer[2]; 
    int len = 1; 

    if (unicodeValue > 127) { 
     buffer[0] = (unicodeValue >> 8) & (1 << 8) - 1; 
     buffer[1] = unicodeValue & (1 << 8) - 1; 
     len = 2; 
    } else { 
     buffer[0] = unicodeValue; 
    } 

    return [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding]; 



} 
+0

चेक इतने पर इस जवाब जो वास्तव में इस बताते हैं:: http://stackoverflow.com/questions/1775859/how-to-convert-a- इसलिए आप UTF-32 एन्कोडिंग का उपयोग करने की आवश्यकता है unichar-value-to-an-nsstring-in-purpose-c –

उत्तर

4

कोड बिंदु जो आप एन्कोड करने का प्रयास कर रहे हैं वह 16 बिट्स में फिट नहीं है।

NSScanner *scan = [[NSScanner alloc] initWithString:@"1F61E"]; 
unsigned int val; 
[scan scanHexInt:&val]; 
char cc[4]; 
cc[3] = (val >> 0) & 0xFF; 
cc[2] = (val >> 8) & 0xFF; 
cc[1] = (val >> 16) & 0xFF; 
cc[0] = (val >> 24) & 0xFF; 
NSString *s = [[NSString alloc] 
    initWithBytes:cc 
      length:4 
     encoding:NSUTF32StringEncoding]; 
NSLog(@"[%@]", s); 
+0

उत्तर के लिए धन्यवाद। क्या मैं कर सकता हूं मेरे चर को इस प्रारूप में 0x00, 0x01, 0cf6, 0x1e में कनवर्ट करें? कृपया मुझे बताएं – user198725878

+0

@ user198725878 कृपया मेरा संपादन देखें। – dasblinkenlight

+0

आपकी मदद के लिए बहुत बहुत धन्यवाद, कृपया आप मुझे बता सकते हैं कि यह कैसे काम करता है – user198725878

0

आपका पहला कदम यह है कि यह करने के लिए कन्वर्ट करने के लिए है के साथ हो रही है कि संख्यात्मक मूल्य है :

unichar unicodeValue = (unichar) strtol([input UTF8String], NULL, 16); 

फिर, वें के नियमों के बाद post है:

char buffer[2]; 
int len = 1; 

if (unicodeValue > 127) { 
    buffer[0] = (unicodeValue >> 8) & (1 << 8) - 1; 
    buffer[1] = unicodeValue & (1 << 8) - 1; 
    len = 2; 
} else { 
    buffer[0] = unicodeValue; 
} 

return [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding]; 

अब आप अपने UTF-8 स्वरूपित स्ट्रिंग है!

+0

नमस्ते, उत्तर के लिए धन्यवाद। क्या यह परिणाम nsstring इमोजी आइकन होगा? या मुझे प्रदर्शित होने के लिए अभी भी कुछ भी करने की ज़रूरत है। कृपया मुझे – user198725878

+0

@ user198725878 क्षमा करें, मेरे पास इसका परीक्षण करने के लिए कोई डिवाइस नहीं है, आपको अपने लिए प्रयास करना होगा! –

+0

जब मैंने एनएसएलओएल का उपयोग करके रिटर्न एनएसस्ट्रिंग वैल्यू प्रिंट करने का प्रयास किया तो यह मुझे "(शून्य)" के रूप में प्रदर्शित करता है कृपया मुझे – user198725878

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