Python 十六进制 IP 作为字符串到 DDN IP 字符串
Python hex IP as string to DDN IP string
我有以下十六进制 IP:0xac141315
我想将其转换为等效的 DDN。
当 0xac141315
具有以下类型时,我曾经使用 '.'.join([str(x) for x in 0xac141315.asNumbers()])
:<class 'CiscoNetworkAddress'>
或者有没有办法将字符串转换回 CiscoNetworkAddress
?
这里是一个完整的如何转换为十进制ip的例子:
#!/usr/bin/python
import sys
# Must be (0xXXXXXXXX)
if len(sys.argv)< 2:
print("Usage: %s (HEX FORMAT, for example 0xAC141315)" % sys.argv[0])
sys.exit(0)
user_option = sys.argv[1]
hex_data=user_option[2:]
#Check if length = 8
if len(hex_data)< 8:
hex_data = ''.join(('0',hex_data))
def hex_to_ip_decimal(hex_data):
ipaddr = "%i.%i.%i.%i" % (int(hex_data[0:2],16),int(hex_data[2:4],16),int(hex_data[4:6],16),int(hex_data[6:8],16))
return ipaddr
result=hex_to_ip_decimal(hex_data)
print result
根据CISCO-TC
MIB,CiscoNetworkAddress
实际上是一个字节串。有很多方法可以将八位字节串转换为 DDN。例如,使用来自 Python 3 标准库的 ipaddress
模块:
>>> from pysnmp.hlapi import OctetString
>>> ip = OctetString(hexValue='ac141315') # this is what you have
>>>
>>> ipaddress.IPv4Address(ip.asOctets())
IPv4Address('172.20.19.21')
或者你可以把它变成SNMP SMI IP地址:
>>> from pysnmp.hlapi import IpAddress
>>> IpAddress(ip.asOctets()).prettyPrint()
'172.20.19.21'
此外,您可以直接从现有对象中获取整数八位字节序列:
>>> ip.asNumbers()
(172, 20, 19, 21)
请记住,CiscoNetworkAddress
旨在容纳许多不同的地址类型,而不仅仅是 IPv4。因此,您应该仅在实际为 IPv4 地址时应用 IPv4 转换。
我有以下十六进制 IP:0xac141315
我想将其转换为等效的 DDN。
当 0xac141315
具有以下类型时,我曾经使用 '.'.join([str(x) for x in 0xac141315.asNumbers()])
:<class 'CiscoNetworkAddress'>
或者有没有办法将字符串转换回 CiscoNetworkAddress
?
这里是一个完整的如何转换为十进制ip的例子:
#!/usr/bin/python
import sys
# Must be (0xXXXXXXXX)
if len(sys.argv)< 2:
print("Usage: %s (HEX FORMAT, for example 0xAC141315)" % sys.argv[0])
sys.exit(0)
user_option = sys.argv[1]
hex_data=user_option[2:]
#Check if length = 8
if len(hex_data)< 8:
hex_data = ''.join(('0',hex_data))
def hex_to_ip_decimal(hex_data):
ipaddr = "%i.%i.%i.%i" % (int(hex_data[0:2],16),int(hex_data[2:4],16),int(hex_data[4:6],16),int(hex_data[6:8],16))
return ipaddr
result=hex_to_ip_decimal(hex_data)
print result
根据CISCO-TC
MIB,CiscoNetworkAddress
实际上是一个字节串。有很多方法可以将八位字节串转换为 DDN。例如,使用来自 Python 3 标准库的 ipaddress
模块:
>>> from pysnmp.hlapi import OctetString
>>> ip = OctetString(hexValue='ac141315') # this is what you have
>>>
>>> ipaddress.IPv4Address(ip.asOctets())
IPv4Address('172.20.19.21')
或者你可以把它变成SNMP SMI IP地址:
>>> from pysnmp.hlapi import IpAddress
>>> IpAddress(ip.asOctets()).prettyPrint()
'172.20.19.21'
此外,您可以直接从现有对象中获取整数八位字节序列:
>>> ip.asNumbers()
(172, 20, 19, 21)
请记住,CiscoNetworkAddress
旨在容纳许多不同的地址类型,而不仅仅是 IPv4。因此,您应该仅在实际为 IPv4 地址时应用 IPv4 转换。