如何在Python中将十六进制转换为十进制?

Sir*_*r D 109 python hex decimal

我有一些Perl代码,其中hex()函数将十六进制数据转换为十进制.我怎么能在Python上做到这一点?

Sve*_*ach 208

如果通过"十六进制数据"表示形式的字符串

s = "6a48f82d8e828ce82b82"
Run Code Online (Sandbox Code Playgroud)

您可以使用

i = int(s, 16)
Run Code Online (Sandbox Code Playgroud)

将它转换为整数和

str(i)
Run Code Online (Sandbox Code Playgroud)

将其转换为十进制字符串.

  • 该死的我喜欢Python. (39认同)
  • @EricWang对于负数,此方法非常有用:http://ideone.com/IHOQvp。除非您有一个以固定宽度的二进制补码格式编码的负数,否则这将是一个不同于此处要求的问题。(提示:在这种情况下,请使用`struct`模块。) (2认同)
  • 十六进制->十进制->二进制->十进制:`int(bin(int(hex(42),16)),2)` (2认同)
  • 请注意,这是 **大端** 解释。这适用于某些事情(例如许多网络协议是大端),但不适用于其他事情,例如查看来自当前大多数本机小端系统的*内部*程序数据。 (2认同)

Tim*_*ker 38

>>> int("0xff", 16)
255
Run Code Online (Sandbox Code Playgroud)

要么

>>> int("FFFF", 16)
65535
Run Code Online (Sandbox Code Playgroud)

阅读文档.

  • int(0xff)将做正确的事情.如果它作为字符串传递,它只需要一个显式的基础. (3认同)
  • @cassm,事实上,在这种情况下 `int()` 没有意义 - 就像写 `int(255)` - 你可以写 `0xff` (2认同)

wim*_*wim 15

您可以使用文字eval:

>>> ast.literal_eval('0xdeadbeef')
3735928559
Run Code Online (Sandbox Code Playgroud)

或者只需将base指定为参数int:

>>> int('deadbeef', 16)
3735928559
Run Code Online (Sandbox Code Playgroud)