2012-02-07 19 views
3

我有NSData,我需要查看其純內容的內容。試過NSLog [NSData description],但它返回NSString。有什麼建議麼?如何以位爲單位顯示NSData的內容?

+0

'show'是什麼意思?出於調試目的或在您的應用程序的視圖中顯示它。就像在iOS的十六進制編輯器中一樣? – 2012-02-07 09:35:56

+0

字節或位請澄清你的問題????以及字節我已經發布了答案 – 2012-02-07 09:48:38

+0

爲什麼你需要看點?十六進制字節(任何程序員應該直觀地知道如何解釋)對於大多數目的來說應該是完全足夠的。 – 2012-02-07 13:10:59

回答

7

時使用此字節

const char *byte = [data bytes]; 
NSLog(@"%s",byte); 

這是位

const char *byte = [data bytes]; 
unsigned int length = [data length]; 
for (int i=0; i<length; i++) { 
    char n = byte[i]; 
    char buffer[9]; 
    buffer[8] = 0; //for null 
    int j = 8; 
    while(j > 0) 
    { 
     if(n & 0x01) 
     { 
      buffer[--j] = '1'; 
     } else 
     { 
      buffer[--j] = '0'; 
     } 
     n >>= 1; 
    } 
    printf("%s ",buffer); 
+0

嗯,我在控制檯中看到一些奇怪的字符,而不是位,當我嘗試與您的解決方案。 – Centurion 2012-02-07 09:55:22

+0

這就是爲什麼我告訴你改變你的問題......它是字節不是位......我有NSData,我需要查看它的內容純字節它是你的線反正會發送你的更新code.till然後糾正你的問題.. – 2012-02-07 10:02:56

+0

對不起,你是對的。我糾正了我的問題:) – Centurion 2012-02-07 12:59:47

2

你可以看一下在內存中的瀏覽器窗口這些字節:

void* bytes_memory = [yourData bytes]; // set breakpoint after this line 

...停在後斷點在局部變量窗口中找到bytes_memory,右鍵單擊它並選擇View memory of *bytes_memory

如果要打印控制檯位(格式爲10011100),則需要將數據轉換爲相應的字符串表示形式(例如here)。

相關問題