如何将 unsigned char 打印为 ascii

Posted

技术标签:

【中文标题】如何将 unsigned char 打印为 ascii【英文标题】:How can I print unsigned char as ascii 【发布时间】:2014-02-10 11:07:29 【问题描述】:

我正在尝试将 unsigned char 转换为 ascii 文本。我该怎么做? 这个我试过了,但是错了:

typedef struct mtmheader

  unsigned char objName[20]; 
  unsigned char msgType[2];  
mtmheader;

mtmheader h;
processMTMHeader(datap,&h, endmmsgp );
printf("Name, type: %s %c\n",(char *) &h.objName,(char *) &h.msgType);

编辑 我读了无符号字节流,想知道我如何打印 ascii 文本。在 printf 中只是伪代码,这是错误的。

【问题讨论】:

请发布示例输入以及您期望的输出 【参考方案1】:
printf("Name, type: %s %c\n", h.objName, h.msgType[0]);

应该打印整个字符串objNamemsgType 中的第一个字符。

对于第一个工作,您必须确保 objName 确实为空终止。

另外,unsigned char 不是用于字符串的正确类型,请使用纯 char 而不使用 unsigned

【讨论】:

我知道,unsigned char 不正确。这是我的问题。这就是我发送这个问题的原因。

以上是关于如何将 unsigned char 打印为 ascii的主要内容,如果未能解决你的问题,请参考以下文章

数组声明为 unsigned char 时的垃圾值

将 unsigned char* 转换为可读字符串 & 这个函数在做啥

如何使C++将数字转换为ASC2码表中对应的符号输出?

如何将 unsigned char[] 转换为 std::vector<unsigned char>

如何将 unsigned long long int 转换为 unsigned char*?

如何使用ostream在c ++中打印unsigned char作为十六进制?