在这种特殊情况下如何避免"ValueError: invalid x escape"错误?



显然通配符%x没有被识别为字节十六进制值,所以我得到了错误"ValueError:invalid\xescape"。

如何避免这种情况?我不熟悉蟒蛇。

for i in xrange(0,length):
  if i % 2 == 0:
    tempArray.append(unpack("B",payload_raw[x])[0]^key)
    x += 1
  else:
    randomByte = random.randint(65,90)
    tempArray.append(randomByte)
    for i in range(0,len(tempArray)):
      tempArray[i]="x%x"%tempArray[i]
    for i in range(0,len(tempArray),15):
      outArray.append("n'"+"".join(tempArray[i:i+15])+"'")
      outArray = "".join(outArray)
      devide = "i % 2;"
      open_structure = open(structure).read()
      code = open_structure % (junkA,outArray,junkB,key,length,devide)
      b.write(code)
      b.flush()

chr()将为您提供值在0到255之间的字节串。

>>> chr(0xd3)
'xd3'

Ignacio的答案是正确的,但也有原力的黑暗面:

>>> your_string = r'x48x65x6cx6cx6fx2cx20x57x6fx72x6cx64x21'
>>> your_string.decode('string-escape')
'Hello, World!'

因此,可以使用原始文字(r'\x'而不是'\x')并使用str.decode方法将转义转换为字符来解决问题。

最新更新