1

我一直在查看各种互联网帖子,并且我看到的很多代码都与此类似:

def mactobinar(mac):
    addr = ''
    temp = mac.replace(':', '')

    for i in range(0, len(temp), 2):
        addr = ''.join([addr, struct.pack('B', int(temp[i: i + 2], 16)))])

    return addr

有人可以解释这段代码是如何工作的吗?

4

3 回答 3

4

为什么人们坚持写这一切?

def mactobinar(mac):
  return binascii.unhexlify(mac.replace(':', ''))
于 2010-06-07T02:01:47.100 回答
1

7.3. struct — 将字符串解释为打包的二进制数据。那将是一个很好的起点。

于 2010-06-07T02:02:20.993 回答
0

好吧,我在 pythen 方面并不是最好的,但我会试一试。

当mac地址被传入时mactobinar,首先发生的事情是您删除分号以制作一个没有任何分隔符的常量字符串。

所以 01:23:45:67:89:ab 变成 0123456789ab

好的,在下一部分中循环抛出了一个范围,这里的这个范围是创建一个偏移范围。

所以range(0, len(temp), 2)返回一个数组,其范围如 range(start,max,steps);

然后对于该数组中的每个值,使用 struct.pack 为该整数创建一个二进制文件并将其连接在一起

你的版本 struct.pack('B', int(temp[i: i + 2], 16)))

文档版本 struct.pack(fmt, v1, v2, ...)

pack 将实体转换为其二进制格式。

希望这能让您对这里发生的事情有所了解

以下是一些帮助您入门的项目:

http://docs.python.org/library/struct.html#format-characters

http://docs.python.org/library/struct.html#struct.pack

于 2010-06-07T02:06:50.573 回答