簡體   English   中英

如何在NSLog()中打印unsigned char *

[英]How to print unsigned char* in NSLog()

標題幾乎說了一切。

想要打印(不是十進制),而是使用unsigned char值(HEX)。

unsigned char data[6] = {70,AF,80,1A, 01,7E};
NSLog(@"?",data); //need this output : 70 AF 80 1A 01 7E

任何的想法? 提前致謝。

char數組沒有格式說明符。 一種選擇是從數組創建NSData對象,然后記錄NSData對象。

NSData *dataData = [NSData dataWithBytes:data length:sizeof(data)];
NSLog(@"data = %@", dataData);

標准庫中沒有任何內容可以執行此操作,因此您可以編寫一個小的十六進制轉儲函數,或者您可以使用其他打印非ambigious完整數據的內容。 就像是:

char buf[1 + 3*dataLength];
strvisx(buf, data, dataLength, VIS_WHITE|VIS_HTTPSTYLE);
NSLog(@"data=%s", buf);

對於小塊數據,您可以嘗試創建NSData並使用debugDescription方法。 這是目前的十六進制轉儲,但沒有任何承諾它永遠是一個。

要在NSLog中打印char *,請嘗試以下操作:

char data[6] = {'H','E','L','L','0','\n'};
NSString *string = [[NSString alloc] initWithUTF8String:data];
NSLog(@"%@", string);

您將需要null終止您的字符串。

來自Apple文檔:

- (instancetype)initWithUTF8String:(const char *)nullTerminatedCString;

返回通過復制UTF8編碼字節的給定C數組中的字符而初始化的NSString對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM