首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在NSLog()中打印无符号字符*

如何在NSLog()中打印无符号字符*
EN

Stack Overflow用户
提问于 2012-11-23 12:09:04
回答 3查看 26.6K关注 0票数 6

标题几乎说明了一切。

想要打印(不是十进制),而是无符号字符值(十六进制)。示例

代码语言:javascript
运行
复制
unsigned char data[6] = {70,AF,80,1A, 01,7E};
NSLog(@"?",data); //need this output : 70 AF 80 1A 01 7E

有什么想法吗?提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-23 12:15:23

char数组没有格式说明符。一种选择是从数组创建一个NSData对象,然后记录该NSData对象。

代码语言:javascript
运行
复制
NSData *dataData = [NSData dataWithBytes:data length:sizeof(data)];
NSLog(@"data = %@", dataData);
票数 4
EN

Stack Overflow用户

发布于 2012-11-23 12:18:40

标准库中的任何东西都不能做到这一点,因此您可以编写一个小的十六进制转储函数,或者您可以使用其他打印明确完整数据的工具。类似于:

代码语言:javascript
运行
复制
char buf[1 + 3*dataLength];
strvisx(buf, data, dataLength, VIS_WHITE|VIS_HTTPSTYLE);
NSLog(@"data=%s", buf);

对于较小的数据块,您可以尝试创建一个NSData并使用debugDescription方法。这目前是一个十六进制转储,但没有任何保证它将永远是一个。

票数 1
EN

Stack Overflow用户

发布于 2014-07-29 10:39:19

要在NSLog中打印char*,请尝试以下命令:

代码语言:javascript
运行
复制
char data[6] = {'H','E','L','L','0','\n'};
NSString *string = [[NSString alloc] initWithUTF8String:data];
NSLog(@"%@", string);

您将需要null终止您的字符串。

来自Apple文档:

代码语言:javascript
运行
复制
- (instancetype)initWithUTF8String:(const char *)nullTerminatedCString;

返回一个NSString对象,该对象通过从utf8编码字节的给定C数组中复制字符而初始化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13522962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档