python - Perl 解压到 Python 转换

标签 python string python-2.7 hex unpack

我正在努力将以下语句从 Perl 复制到 Python,但我不确定如何使用 python struct 模块执行。

所以我需要转换的代码是:

my $hex_string = "DEADBEEF";
my @bytes = map( hex, unpack("(A2)*", $hex_string ) );

以上等同于

my @bytes = ( 0xDE, 0xAD, 0xBE, 0xEF );

A2 似乎不是 Python 结构的好选择。谁能帮我解决这个问题?

最佳答案

您可以使用 intbase 参数将十六进制数字字符串转换为 int:

>>> int('15', base=16)
21

>>> val = 15
>>> int(str(val), base=16)
21

更新

使用struct.unpack ,首先使用 binascii.unhexlifyhex_string 转换为二进制数据(或 binascii.a2b_hex ):

>>> import struct, binascii
>>> hex_string = "DEADBEEF"
>>> binascii.unhexlify(hex_string)  # Hexa decimal -> binary data
'\xde\xad\xbe\xef'

>>> struct.unpack('4B', binascii.unhexlify(hex_string))  # 4 = 8 / 2
(222, 173, 190, 239)
>>> struct.unpack('4B', binascii.unhexlify(hex_string)) == (0xDE, 0xAD, 0xBE, 0xEF)
True
>>> struct.unpack('{}B'.format(len(hex_string) // 2), binascii.unhexlify(hex_string))
(222, 173, 190, 239)

关于python - Perl 解压到 Python 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36567535/

相关文章:

python - Python 如何处理子包?

python - 反转数据框中给定日期的时间

python - 将包含字符串的 Pandas 系列转换为 boolean 值

python - 当分隔符两侧的字符不是数字时,在 python 中分割字符串

objective-c - 将字符串转换为 double 以供坐标使用,Xcode

python - 在python中查找两个列表之间的微分条件

python - 扭曲插件错误

python - 使用 Python 更新 Evernote 笔记

java - 使用 Java 生成所有单词

python - 导入错误 : cannot import name