.decode('hex')Python2.7和Python3

时间:2019-04-13 14:32:20

标签: python python-3.x

我有以下代码,这些代码在Python 2.7中完全按照我的要求工作。它以regs为单位获取一系列整数值,并将每个值转换为其等效的字符。例如,21365 ==> 0x5375 amd将导致“ Su”。

RegString = ""
    for i in range(length):
        if regs[start+i]!=0:
            print (" Regs is ", regs[start+1], " Hex  is ", hex(regs[start+i]), " Striped is ", str(format(regs[start+i],'x') ))
            RegString = RegString + str(format(regs[start+i],'x').decode('hex'))

但是在Python 3中,decode('hex')引发错误。现在,我查看了很多与此问题相关的帖子,但无法将这些解决方案应用于我的问题,即修改以上代码以使其在Python 3中工作。

这是我尝试运行此代码段时的输出:

  

Regs是20341十六进制是0x4f75条纹是4f75

     

回溯(最近通话最近):       Get_Regester_String中的文件“ v3Test.py”,第23行       RegString = RegString + str(format(regs [start + i],'x')。decode('hex'))

     

AttributeError:'str'对象没有属性'decode'

任何人都可以指出正确的方向来修复上述失败的语句,以便它可以在Python 3.7中运行“ RegString = RegString + str(format(regs [start + i],'x' ).decode('hex')) “。谢谢... RDK

1 个答案:

答案 0 :(得分:0)

对于python 3,请使用以下过程

bytes.fromhex(format(regs[start+i],'x')).decode('utf-8')