提问人:Sir D 提问时间:2/9/2012 最后编辑:Peter MortensenSir D 更新时间:2/14/2021 访问量:475327
如何在 Python 中将 hex 文件转换为 decimal?[复制]
How do I convert hex to decimal in Python? [duplicate]
问:
我有一些 Perl 代码,其中 hex() 函数将十六进制数据转换为十进制。如何在 Python 上做到这一点?
答:
56赞
Tim Pietzcker
2/9/2012
#1
>>> int("0xff", 16)
255
或
>>> int("FFFF", 16)
65535
阅读文档。
评论
4赞
cassm
1/16/2016
int(0xff) 会做正确的事情。只有当它作为字符串传递时,它才需要显式基。
1赞
jbg
2/22/2019
@cassm,事实上,在这种情况下是没有意义的——这就像写作一样——你可以只写int()
int(255)
0xff
335赞
Sven Marnach
2/9/2012
#2
如果“十六进制数据”是指形式的字符串
s = "6a48f82d8e828ce82b82"
你可以使用
i = int(s, 16)
将其转换为整数,并且
str(i)
将其转换为十进制字符串。
评论
1赞
Eric
5/20/2016
对于负十六进制数,这不起作用。
2赞
Sven Marnach
5/20/2016
@EricWang 这对于负数非常有效:ideone.com/IHOQvp。除非你有一个以固定宽度 2 的补码格式编码的负数,但这将是一个与这里提出的问题不同的问题。(提示:在这种情况下使用该模块。struct
2赞
arcolife
1/24/2018
十六进制 -> 十进制 -> 二进制 -> 十进制:int(bin(int(hex(42), 16)), 2)
3赞
Chris Stratton
1/4/2019
请注意,这是一个大的字节序解释。这适用于某些事情(例如,许多网络协议是大端序),但不适用于其他事情,例如查看当前大多数系统的内部程序数据,这些系统本身就是小端序。
1赞
Chris Stratton
1/4/2019
相反,实际上很常见遇到已经呈现为人类可读十六进制的数据,其中包含很少的端数值。所以不,评论丝毫没有误导性。Python 不仅用于全面的全 python 解决方案,还大量用于处理其他系统的输出和日志以及将测试台粘合在一起。
21赞
wim
2/9/2012
#3
您可以使用文字值:
>>> ast.literal_eval('0xdeadbeef')
3735928559
或者只是将 base 指定为参数:int
>>> int('deadbeef', 16)
3735928559
一个不为人知的技巧,如果你将 base 指定为 ,那么 Python 将尝试从字符串前缀中确定 base:0
int
>>> int("0xff", 0)
255
>>> int("0o644", 0)
420
>>> int("0b100", 0)
4
>>> int("100", 0)
100
评论
hex
print