在无符号字符指针内打印值

时间:2013-08-22 06:39:01

标签: c++ c pointers

unsigned char流的用途是什么。

如果我有一个如下所示的无符号字符流,我该如何打印该流中的值。

对于普通的字符流或字符串,我可以使用%s打印它,但是这个怎么样。

提前致谢。

unsigned char *ptr ="(some value)"

2 个答案:

答案 0 :(得分:7)

在字符串处理方面,unsigned char和普通char之间没有显着差异。后者可以是有符号或无符号的,它是实现定义的。但是,所有符号表始终具有正索引。因此,当您处理字符串时,您始终可以安全地在unsigned charchar之间进行投射。 (两种类型之间的指针转换是标准的正式定义不明确的行为,但实际上,它总是适用于任何系统。)

因此printf("%s", ptr);可以正常工作。

答案 1 :(得分:3)

unsigned char数组通常表示原始字节数据,如果您想使用%s将其作为字符串输出,您可能会得到乱码,这对您没有意义。 如果您真的希望看到这些值,那么我建议将单个字节转换为short,然后使用%i输出。

只是我的意见。