免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6568 | 回复: 9
打印 上一主题 下一主题

求解:2位16进制数存储于1个字节的char类型中 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-18 16:22 |只看该作者 |倒序浏览
网上google了半天,没找到好办法。如下:
u_char *pkt_data;
char Buf[5000];

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

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2012-04-18 16:35 |只看该作者
2个字节?
UTF8表达的汉字你咋办?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2012-04-18 16:40 |只看该作者
u_char是什么类型?unsigned char?
感觉LZ没搞清概念

论坛徽章:
0
4 [报告]
发表于 2012-04-18 16:47 |只看该作者
回复 2# safedead
我这边是gbk的


   

论坛徽章:
0
5 [报告]
发表于 2012-04-18 16:48 |只看该作者
回复 3# hellioncu
是 unsigned char,为何说没搞清概念


   

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
6 [报告]
发表于 2012-04-18 16:53 |只看该作者
nanjingnew4 发表于 2012-04-18 16:48
回复 3# hellioncu
是 unsigned char,为何说没搞清概念


因为你说“转换成16进制,存放于Buf[0]中”,转换成16进制字符串,那肯定是放不进的。不是字符串形式,那无所谓是几进制,结果都一样。

如果你只是为了比较,Buf[0] > 0x0A就可以了。

论坛徽章:
0
7 [报告]
发表于 2012-04-18 19:06 |只看该作者
'0A' == 0x3041
一个char不可能吧

论坛徽章:
0
8 [报告]
发表于 2012-04-18 19:49 |只看该作者
本帖最后由 家住马戏团 于 2012-04-18 19:51 编辑

pkt_data是unsigned char* 就算x起始处存了两个字节的字符,但pkt_data[x]来说都是一个char
除非能知道两个字节的首地址,首地址处强转为unsigned short*再解引用

有一种编解码方式叫tag-len-val,不知和楼主要说的有没有什么关联。
tag决定类型,len决定长度,根据类型和长度解出val。

论坛徽章:
0
9 [报告]
发表于 2012-04-19 08:28 |只看该作者
2位16进制数存储于1个字节的char类型中
别想了,这怎么可能,2位16进制数已经需要2个字节了,如何用1个字节来描述,就算你你把两个字节的数据用自定义的压缩方法合并了,也不可能用if(Buf[0]> '0A')来比较他们

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
10 [报告]
发表于 2012-04-19 20:41 |只看该作者
用BASE64编码,就不怕传输顺序和切分字节的问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP