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 则这个和后面的一个字节是一个汉字。