显然,通配符%x未被识别为字节十六进制值,因此我收到错误“ValueError:invalid \ x escape”。
如何避免这种情况?我不熟悉python。
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()
答案 0 :(得分:6)
chr()
将为您提供0到255之间值的字节字符串。
>>> chr(0xd3)
'\xd3'
答案 1 :(得分:2)
伊格纳西奥的回答是正确的,但也有黑暗的一面:
>>> your_string = r'\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x21'
>>> your_string.decode('string-escape')
'Hello, World!'
所以你可以使用原始文字(r'\ x'而不是'\ x')解决问题,并使用str.decode
方法将转义转换为字符。