标题几乎说明了一切。
想打印(不是十进制),而是无符号字符值(十六进制)。例子
unsigned char data[6] = {70,AF,80,1A, 01,7E};
NSLog(@"?",data); //need this output : 70 AF 80 1A 01 7E
任何的想法?提前致谢。
标题几乎说明了一切。
想打印(不是十进制),而是无符号字符值(十六进制)。例子
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);
标准库中没有任何东西可以做到这一点,因此您可以编写一个小的十六进制转储函数,或者您可以使用其他打印无歧义的完整数据的东西。就像是:
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;
返回一个 NSString 对象,该对象通过从给定的 UTF8 编码字节 C 数组中复制字符来初始化。