2 hj563308597 hj563308597 于 2015.06.05 09:35 提问

android 16进制字符串解析问题

获取了一个字符串,String s =“3FB71EC0EEC3AF00000000000000000000000000000000000000000000000000003F043C6C696D616F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FB501013FB61434333035323531393839303630363936383800003F0513343330353235323031343039303030303030313F060A010203040506070809103F0704198906063F0801013F090200013F10034305253F11033135363F120239393F130200329000”

这是一个16进制的字符串,分割原则如下:

图片说明

每个分割标志位的后两位代表占位长度,不足位的补0,我可以分割出来这些字符串,但是我怎么去掉后面补位的0所带来解析上的问题?求高手指点

2个回答

Tiger_Zhao
Tiger_Zhao   Rxr 2015.06.05 09:54

比如姓名这段是C0EEC3AF0000000000000000000000000000000000000000000000000000,以两个字符(对应数据的一个字节)为一组,出现第一组00就表示结束,截断。

Tiger_Zhao
Tiger_Zhao 回复hj563308597: 先按数据元分段,然后再对每个数据元进行截断。没叫你把00开始就划归下一个数据元啊。
2 年多之前 回复
hj563308597
hj563308597 我不知道你仔细观察过后面的数据没有,如果出现00直接截断的话,后面身份证号码之类的是不是出问题?因为身份证号码中间本身就有0,如果简单的把00作为结束的标志解析肯定出问题
2 年多之前 回复
sl_18500
sl_18500   2015.06.05 11:14

用3F分割字符串s后,{B71EC0EEC3AF0000000000000000000000000000000000000000000000000000,043C6C696D616F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,B50101,...},根据3F后面的数据判断类型,如数组第二个以04开头的,代表姓名拼音,然后去除04,得到拼音

Csdn user default icon
上传中...
上传图片
插入图片