[英]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.