| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6342 人关注过本帖, 1 人收藏
标题:怎么把16进制的gbk码转换成汉字(我只有把汉字转换成16进制的代码)
取消只看楼主 加入收藏
lewyoung
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-1-5
结帖率:0
收藏(1)
 问题点数:0 回复次数:1 
怎么把16进制的gbk码转换成汉字(我只有把汉字转换成16进制的代码)
大家好,我现在在做一个火车票二维码信息的小程序,我先用二维码软件读出火车票上的信息,然后再根据信息解密方式解读出来。动车是实名制的,其中乘客姓名是用一段10进制的数字表示的,解密时需要把10进制转换成16进制,然后我只能通过汉字反查gbk码来验证转换后的16进制数字。
想请教哪位高手给一个把16进制数字转换成汉字的代码,小弟不胜感激!

附火车票二维码部分信息解读(转):
现举例分析,这是一张真火车票上二维码包含的信息(颜色只为方便下面的讲解):


280979551431033643637933330963623970135351819614962562403976657943200000000000000000000053897628805389762880538976288053897628805389762881730000

    现在开始跟大家分享我已经了解的部分:

    前两位(褐色)为火车票左上角红色票号首字母的代码,该数字加39后得到相应字母的ASCII码,以该例说明,28+39=67,查询ASCII表得到大写C,其他情况依此类推,再例如A就是26了。

    3-8位(红色)为火车票左上角红色票号后面的六位数字,只起为每张票编号的作用,一起买的票就是连号的。

    再后面55位(浅紫色)即是尚未分析出的部分,估计与火车票上本文未提到的其他信息有关,而且很可能是16进制编码。

    接着的六位(橙色)是身份证号开始的标识,每张票都一样。

    正如上句所言,接着的18位(***)就是身份证号了,非实名制购买的车票就是18个0,至于尾数是x的身份证号怎么处理的我还不知道,手头没有案例。

    然后是个比较复杂的部分,例子中重复了五遍的“0538976288”(蓝色)就是实名制购买的车票的姓名信息了。以如下方式解密:第一步,每十位数字分段,每段换算成相应的八位十六进制数;第二步,将上述得到的16进制数字按每两位分段,从后往前一段一段往前读,每两段就是一个汉字的GB编码了。如果不懂,请看如下两个例子:先说本例,首先,分为五段“0538976288”,换算成十六进制就是“20202020”,对计算机了解较多的同学可能直接就懂了,20(16进制)代表的就是空格,也就是说非实名制车票的姓名部分全是空格;第二个例子,如果你换算出的十六进制是2020……F5C1(前面是若干20,后四位是F5C1),然后每两位分段,最后部分为F5,C1,最后从后往前读得到C1F5,这就是汉字“刘”的GB编码,可以用微软拼音输入法验证(虽然我也讨厌这个输入法,每次装完系统或微软的软件之后都要屏蔽,但是它还是有这个特殊用途的,该功能在其菜单栏的“功能菜单”——“辅助输入法”——“GB码输入”)。

    理解之后就会发现其实也没啥加密技术含量,也就是两次编码换算和一次倒序而已。

    最后倒数4-7位(绿色)是火车的发车时间,例子中1730代表的就是下午5点半发车。之所以刚才说了“最后”是因为实际上的最后三位都是3个0,估计起解决冲突或保留功能的作用吧~

    好了,就是这些,谁对中间55位有了解就烦请指点了~
搜索更多相关主题的帖子: 汉字转换 
2011-07-09 20:15
lewyoung
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-1-5
收藏
得分:0 
谢谢二楼的你,根据你的提示,我把那个做完了。发给你考察一下 ,呵呵。
再次感谢你!!
二维码.zip (8.58 KB)
2011-07-10 11:56
快速回复:怎么把16进制的gbk码转换成汉字(我只有把汉字转换成16进制的代码)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035120 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved