【发布时间】:2015-08-26 14:36:19
【问题描述】:
我知道还有其他类似的帖子,但我认为我的不一样。我有一组要显示的数字。但是,它被保存为 unsigned short。因为它是从网络缓冲区提供给我的,所以我的所有数据都是无符号短格式。因此,对于以“ABC-”开头的序列号,两个无符号短裤将包含 0x4142 和 0x432D(已经是 ASCII 格式)。我需要将它们转换为 char 类型以使用 printf 和 %s 显示,但对于我系统的其余部分,它们需要保持为无符号短。这是我到目前为止尝试过的,但输出是空白的:
unsigned char * num[3];
num[0] = (unsigned char*)(SYSTEM_N >> 8);
num[1] = (unsigned char*)(SYSTEM_N & 0x00FF);
printf("System Number: %s \r\n", num);
谁能帮我解释一下?谢谢!
【问题讨论】:
-
而转换成char*应该是转换成char
-
unsigned char * num[3];你知道num的类型是什么吗? -
为什么不
printf("System Number: %c%c\n", SYSTEM_N >> 8, SYSTEM_N & 0x00FF);?您的 “我需要...[使用] %s” 只会让它变得更难。 -
@TonyD 我使用的是 %s,即 char 字符串格式的输出。这个例子是我所拥有的简短版本。实际上有大约 50 个要输出。
-
“正在使用” - 很公平 - 但在我看来,
%c%c仍然可以让您每次都先复制到unsigned char数组,并且效果更好。如果我是你并且做 50,我会使用宏 ala#define CC(N) N >> 8, N & 0xFF添加printf参数....