首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

16进制数存储于char类型中的有关问题

2012-04-21 
16进制数存储于char类型中的问题如题,C/C++ codeu_char *pkt_datachar Buf[5000]我需要将pkt_data[i]这

16进制数存储于char类型中的问题
如题,

C/C++ code
u_char *pkt_data;char Buf[5000];

我需要将pkt_data[i]这个元素转换成16进制,存放于Buf[0]中。
存放后比较时可以达到这样的效果 if(Buf[0]> '0A')
主要是为了解决抓包时抓到汉字,有2个字节,需要将Buf[0]和Buf[1]拼起来

第二个问题是我上个帖子问题没弄明白
printf("%.2x", pkt_data[i]);
这个%.2x 表示小数点后两位吗?可是ascii码哪来的两位

[解决办法]
printf("%.2x", pkt_data[i]);
.2X表示16进制的数据的 后1个字节。
因为16进制的数据每一个数表示 4位。
[解决办法]
如果你想用半个字节 -- 4 位 -- 表示 0~F 的16进制数据,你需要自己写函数转换,网上有例子, google
[解决办法]
.2X表示输出十六进制的有效位数2位,不足两位左边补0. 比如6就输出06,15就是FF.
汉字的话,你用pkt_data[i]>0x80 则这个和后面的一个字节是一个汉字。

热点排行