2012-10-31 179 views
1

我發現此方法將NSData轉換爲NSString對象。NSData到NSString轉換

NSData *data = //some data 
NSString *string = [NSString stringWithFormat:@"%@", data]; 

數據將如何解碼?是否應用NSUTF8StringEncoding

謝謝!

+0

[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+3

很差。使用initWithData。 –

回答

7

這是不是推薦的方法。相反使用:

NSString *newString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

這將確保您具有指定的數據編碼。

+1

錯! NSData.description返回一個十六進制轉儲。 –

+0

上面的代碼是正確的:)。 – dtuckernet

4

在這種情況下,stringWithFormat:方法將發送NSData對象description消息,得到的結果,並使用新創建的字符串的內容。本質上,結果是相同的

NSString *string = [data description]; 

根據NSData's documentationdescription返回

包含在NSData的屬性列表格式接收器的內容十六進制表示

一個NSString對象。

+0

對。我隱約記得,NSData的「描述」是一個十六進制轉儲。 –

+0

@HotLicks是的,我正在尋找一份文件複製粘貼報價:) – dasblinkenlight

+0

我剛剛在硬件上測試它 - 十六進制轉儲。 –

0

你也許應該使用NSString *string = [[NSString alloc] initWithData: data encoding:SomeFormOfEncoding];

您可以查看方法的詳細信息here

編碼形式可以看到here