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;
以此类推,把前面的字符取出来。
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]);
}
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);