将uint32转换为可读值

时间:2014-06-03 09:02:48

标签: python python-2.7 struct dbus

您好我正在编写一个API来与ubuntu上的网络管理器进行通信。当我要求IP地址时,dbus服务返回如下内容:

broadcast_add = dbus.UInt32(4278298816L, variant_level=1)

到目前为止,我正在做的是通过以下方式将其转换为32位二进制文​​件:

In [1]: '{0:0<32}'.format(bin(broadcast_add)[2:])
Out[1]: '11111111000000011010100011000000'

是否有任何直接的方法将此uint32转换为可读的IP地址,如

192.168.1.255

1 个答案:

答案 0 :(得分:1)

如果您可以访问此值4278298816,则可以尝试使用struct,例如:

>>> import struct
>>>
>>> struct.unpack('<BBBB', struct.pack('<I', 4278298816))
(192, 168, 1, 255)
>>>
>>> '{}.{}.{}.{}'.format(*_)
'192.168.1.255'
>>>