0

我有一个字符串形式的mac地址,

00:23:34:d2:a4:00  

这个mac地址如何索引到数组?

为了给出一个完整的图片,我将mac地址中的最后3个字节,即d2:a4:00,存储在字节数组中。如果 d2,a4,00 的对应字节是 00010001、00110010、00000000,那么通过连接这些二进制值给我 000100010011001000000000,如果转换成整数给我,可以说是 1000200。所以,我可以访问与此相关的信息mac地址使用数组[1000200]。

如果我想以相反的方向进行操作,假设我得到了 1000200 号码,我如何将其转换为 mac 地址 00:23:34:d2:a4:00(假设所有条目的前 3 个字节都相同)。对不起,这是一个很长的帖子。如果您提供方向,这将是很大的帮助。效率非常重要(网络应用程序所需的执行时间应该非常少)。提前致谢。

4

2 回答 2

1

要将 MAC 中的最后 3 个字节转换为整数并返回:

mac = 'zz:zz:zz:d2:a4:00'
i = int(''.join(mac.split(':')[-3:]), 16) # integer
# -> 13804544

h = '%06x' % i
# -> 'd2a400'

mac = 'zz:zz:zz:%s:%s:%s' % (h[0:2], h[2:4], h[4:6])
# -> 'zz:zz:zz:d2:a4:00'

正如@Lattyware 提到的,您应该首先尝试使用 MAC 作为键的字典。

要将整数转换为以十六进制字符串表示的 MAC:

>>> h = '%012x' % 123
'00000000007b'
>>> ':'.join(h[i:i+2] for i in range(0, 12, 2))
'00:00:00:00:00:7b'
于 2012-09-23T16:38:04.837 回答
0

只需使用该split函数,然后通过探索转换为二进制?

(像这样的东西:)

[int(_, 16) for _ in "00:23:34:d2:a4:00".split(':')]
于 2012-09-23T16:06:26.820 回答