标题几乎可以说明一切。如何在NSLog中打印unsigned char *()
想打印(不是以十进制),而是以无符号字符值(十六进制)。 示例
unsigned char data[6] = {70,AF,80,1A, 01,7E};
NSLog(@"?",data); //need this output : 70 AF 80 1A 01 7E
任何想法?提前致谢。
标题几乎可以说明一切。如何在NSLog中打印unsigned char *()
想打印(不是以十进制),而是以无符号字符值(十六进制)。 示例
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
终止您的字符串。
从苹果文档:
- (instancetype)initWithUTF8String:(const char *)nullTerminatedCString;
返回由从UTF8编码字节的给定的C阵列复制字符初始化一个NSString对象。
使用printf和'for'循环:http://stackoverflow.com/questions/6357031/how-do-you-convert-buffer-byte-array-to-hex-string-in-c –
我猜你必须做'@“%02X%@ 02X%@ 02X ...”,(unsigned int)data [0],(unsigned int)data [1],...' –