标题几乎说明了一切。
想要打印(不是十进制),而是无符号字符值(十六进制)。示例
unsigned char data[6] = {70,AF,80,1A, 01,7E};
NSLog(@"?",data); //need this output : 70 AF 80 1A 01 7E
有什么想法吗?提前谢谢。
发布于 2012-11-23 12:15:23
char
数组没有格式说明符。一种选择是从数组创建一个NSData
对象,然后记录该NSData
对象。
NSData *dataData = [NSData dataWithBytes:data length:sizeof(data)];
NSLog(@"data = %@", dataData);
发布于 2012-11-23 12:18:40
标准库中的任何东西都不能做到这一点,因此您可以编写一个小的十六进制转储函数,或者您可以使用其他打印明确完整数据的工具。类似于:
char buf[1 + 3*dataLength];
strvisx(buf, data, dataLength, VIS_WHITE|VIS_HTTPSTYLE);
NSLog(@"data=%s", buf);
对于较小的数据块,您可以尝试创建一个NSData并使用debugDescription方法。这目前是一个十六进制转储,但没有任何保证它将永远是一个。
发布于 2014-07-29 10:39:19
要在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数组中复制字符而初始化。
https://stackoverflow.com/questions/13522962
复制相似问题