Python-将十六进制转换为INT/CHAR

2024-09-28 23:31:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难将十六进制改为int/char(最好是char)。通过网站; http://home2.paulschou.net/tools/xlate/我在hex框中输入C0A80026的十六进制,在DEC/CHAR框中,它正确地输出了我希望它包含的IP。

这些数据是从一个外部数据库中提取的,我不知道它是如何保存的,所以我只需要处理十六进制字符串本身。

我试过使用binascii.unhexlify函数来查看是否可以解码它,但我担心我可能对hex的理解不够深入,无法理解我正在做的事情。

仅使用int()强制转换尝试打印也没有产生所需的结果。我需要一些方法从那个十六进制字符串(或类似的字符串)转换到原始IP。

更新:对于以后遇到这种情况的人,我稍微修改了下面的答案,以提供一个准确的打印输出作为IP使用

dec_output = str(int(hex_input[0:2], 16)) + "." +  str(int(hex_input[2:4], 16)) + "." + str(int(hex_input[4:6], 16)) + "." + str(int(hex_input[6:8], 16))

Tags: 字符串iphttpinputnet网站toolsint
3条回答

简单的方法

>>> s = 'C0A80026'
>>> map(ord, s.decode('hex'))
[192, 168, 0, 38]
>>> 

如果你喜欢列表理解

>>> [ord(c) for c in s.decode('hex')]
[192, 168, 0, 38]
>>> 

您可能还需要chr函数:

chr(65) => 'A'

如果你想从中得到4个独立的数字,那么把它当作4个独立的数字。你不需要binascii

hex_input  = 'C0A80026'
dec_output = [
    int(hex_input[0:2], 16), int(hex_input[2:4], 16),
    int(hex_input[4:6], 16), int(hex_input[6:8], 16),
]
print dec_output # [192, 168, 0, 38]

这可以概括一下,但我把它留给你作为练习。

相关问题 更多 >