我正在尝试创建一个带有字符串IPv4地址并将其转换为十六进制整数的程序。我的程序工作,但十六进制值是字符串的形式,所以我的程序返回值错误(例如:" int()的无效文字与基数10"或"期望类型int ()或float()...")。
example input: 115.255.8.97
example output: 73FF0861
#IPv4 to Hex
splitip = sys.argv[2].split('.')
hexint = hex(int(splitip[0]))[2:].zfill(2) + hex(int(splitip[1]))[2:].zfill(2) + hex(int(splitip[2]))[2:].zfill(2) + hex(int(splitip[3]))[2:].zfill(2)
hexint = hexint.replace('0x','')
任何帮助将不胜感激!
注意:我的问题是hexint变量是一个字符串。我的程序需要将值ad设为整数。
答案 0 :(得分:0)
使用socket.inet_aton
将点分的IPv4地址转换为字节字符串。
>>> import socket
>>> socket.inet_aton('115.255.8.97')
's\xff\x08a'
然后,将值传递给binascii.hexlify
以获得二进制字符串的十六进制表示。
>>> import binascii
>>> binascii.hexlify(socket.inet_aton('115.255.8.97'))
'73ff0861'
>>> binascii.hexlify(socket.inet_aton('115.255.8.97')).upper()
'73FF0861'