【发布时间】:2019-07-30 01:06:51
【问题描述】:
我正在将一些代码从 python 2.7 转换为 python 3,并且遇到了十六进制整数的问题。
value = 0x11
hexdump(value)
python2 output: 11
python3 output: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
这个 hexdump 函数来自 scapy,并已用于我所有其他的十六进制故障排除。执行 chr(0x11) 会产生预期值,但如果不是 int 类型,许多 scapy 函数会被调用崩溃。
我需要一种方法来获取 11 作为 int 类型的十六进制数据。我尝试使用
更改类型 int(value,16) #also tried 0 and 10
这个问题是我得到 ValueError: invalid literal for int() with base 10: '\x11'
【问题讨论】:
-
print(type(0x11))这表明0x11是int -
chr(0x11)转换为带有一个字符的字符串,其代码为x11,但由于此代码没有字体,因此 Python 将其显示为\x11。但是 Python 不会将其视为具有四个字符的字符串(两位数1),并且您不能将其转换为整数使用int()但ord('\x11')给出整数 17 - 在十六进制中它是 11。
标签: python python-3.x hex scapy