c语言中如何将十六进制转换成2个字节输出

2024-11-17 12:53:03
推荐回答(3个)
回答1:

MSGLEGTH = 0x9001;
如果转换成char*字符串形式,内存中保存是什么数据呢 例如有可能是 0x00 0x00 0x90 0x01,
这样转换的字符可能就是 0x00 0x00 这样肯定打印不出来,即使是0x90,0x01也是不可见字符。

LZ希望打印出9001吧。其实先建立个16进制的表

char hex[]= {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

然后一位一位解析

例如 int i = 78908 16进制 0x1343c
int j;

第一个字节
j = 78908 %16;
可以输出hex[j];

i = i /16;

以此类推,把前面的字符取出来。

回答2:

  

  c语言将十六进制转换成2个字节输出,参考代码如下:

  char msg[]={0x01,0x02,0x03, 0x04};
  for(i=0;i*2<3;i++)
  {
       printf("0x%02x%02x\n",msg[i*2],msg[i*2+1]);
  }

回答3:

printf("msg=%s,len=%d\n",msg,len);
s%是输出字符串,并且字符串以'\0'结束,char msg[1];是一个字符,
printf("msg=%c,len=%d\n",msg,len);
看数值的话
printf("msg=%d,len=%d\n",(int *)msg,len);