\x12\xe3类数据转化为可视化数据

\x12 \xe3数据是什么

\x12 \xe3是16进制数据。是ASCII对应字符的数字转化为16进制所得。
平时遇到的问题总是奇奇怪怪,所以不要问我为什么要转化为字符串/十进制数字/ascii
遇到的问题就是
在测试案例中对比数据时,前人留下的是16进制和字母混合结果,于是在新的需求做了相应改动后测试案例也应该做相应的匹配。

所以,要转化为可视化数据的话需要做以下操作:

  • 16进制数据转化为十进制数据
  • 十进制数据再转化成对应的ascii码对应的字符

如果你到手的数据,全部是\x12这种16进制数据的话,可以使用python直接print获取到转码的结果

print "\x12\xe3\x01\x0a\x06\x73\x79\x73\x74\x65\x6d\x10\x01\x1a\xd6\x01\x0a\x14\x0a\x05\x61\x64\x6d\x69\x6e\x12\x0b\x0a\x05\x61\x64\x6d\x69\x6e\x10\x04\x18\x01\x0a\x1a\x0a\x08\x61\x75\x64\x61\x64\x6d\x69\x6e\x12\x0e\x0a\x08\x61\x75\x64\x61\x64\x6d\x69\x6e\x10\x04\x18"

但是,如果你获取到的全是 10进制的数字怎么办:
于是,方案:

  • 转化成16进制数据
  • 对照ascii码获取到对应字符

但是字符可能有超出ascii范围的。就会显示不出对应字符,这里我没有这个需求,所以暂时不考虑,如果有需要的可以去查一下字符范围,然后选择对应的码进行解码。

所以我获取到的十进制数据转化成字符就应该是:

def to16(i):
    k=i/16
    v=i%16
    kvs={
        0:"0",
        1:"1",
        2:"2",
        3:"3",
        4:"4",
        5:"5",
        6:"6",
        7:"7",
        8:"8",
        9:"9",
        10:"a",
        11:"b",
        12:"c",
        13:"d",
        14:"e",
        15:"f",
            }
    ss="\\x{}{}".format(kvs[k],kvs[v])
    return ss

asciii="18 61 10 6 115 121 115 116 101 109 16 1 26 49 10 20 10 5 97 100 109 105 110 18 11 10 5 97 100 109 105 110 16 4 24 1 10 19 10 4 114 111 111 116 18 11 10 5 97 100 109 105 110 16 4 24 1 18 4 110 111 100 101"
t161=[]
for i in asciii.split(" "):
    t161.append(to16(int(i)))
print "".join(t161)

没有直接将结果转化成ascii的对应字符。所以我直接复制到python脚本中print出来了,应该是有方法可以集成的。
得到了需要的结果。
但是我要对比的数据是字符串和16进制混合的,就很emmm…于是乎

方案:

  • 限制转化成10进制的数据,如果是在字符串(我只用了小写字符)的范围内的就直接存字符
for i in asciii.split(" "):
    if int(i) > 97 and int(i) < 122:
        t161.append(chr(int(i)))
        continue
    t161.append(to16(int(i)))

即可获得混合16进制和字符的数据。然后执行test,终于解决了问题
在这里插入图片描述

文章参考:
https://blog.csdn.net/l460133921/article/details/74892476
https://bbs.csdn.net/topics/70006817
https://www.nhooo.com/python/python-examples-ascii-character.html
https://zhidao.baidu.com/question/358597454.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值