2012-10-25 32 views
0

我有一個NSdata對象,填充了一堆信息,這些信息在十六進制格式化..我試圖將其轉換爲其正確的字符串表示,但我正努力取得任何成功。如何將NData填充爲十六進制值到NSString

我試過的一件事是簡單地把它放到一個NSString,然後NSLog它與一個特殊的字符標識符thingy ..忘了單詞(%02x),但是做到這一點,我編碼到NSUTF16 ..哪我不想這樣做..我很想看看我得到的數據看起來像是一個NSString。

我這樣做的原因是因爲我後來在我的代碼中遇到了一些問題,並且我不確定它是否因爲我收到的數據不正確,或者我在某些時候填充了它處理它。

任何幫助,將不勝感激。

回答

0

也許我沒有理解,但這樣的事情:

NSData *yourData; 
NSLog(@"%@", [yourData description]); 

不適合您的需求?

+0

hrmm現在嘗試,我讀了一些關於'描述',但無法找到如何在開發文檔中使用它。 – HurkNburkS

+0

沒有這dosnt適合我的需要..它顯示我的數據在其十六進制格式我想翻譯,所以我可以閱讀到底是什麼。 – HurkNburkS

0

試試這個 -

-(NSString*)hexToString:(NSData*)data{ 
    NSString *hexString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
    if (([hexString length] % 2) != 0) 
     return nil; 

    NSMutableString *string = [NSMutableString string]; 

    for (NSInteger i = 0; i < [hexString length]; i += 2) { 

     NSString *hex = [hexString substringWithRange:NSMakeRange(i, 2)]; 
     NSInteger decimalValue = 0; 
     sscanf([hex UTF8String], "%x", &decimalValue); 
     [string appendFormat:@"%d", decimalValue]; 
    } 

    return string; 
} 
+0

Hrmm ..所以更多的閱讀我做的,我想我已經發現,雖然數據代表HEX ..其實UNICODE編碼..但仍然HEX所以現在我試圖找出如何編碼它直接UTF16 – HurkNburkS

1

你可以得到你的NSData的字符串表示,像這樣:

NSData *data = (your data) 
NSString *string = [NSString stringWithCString:[data bytes] encoding:NSUTF8StringEncoding]; 

是否回答你的問題?

+0

不這只是給了我一個倒掛?問號。 – HurkNburkS