我一直在查看各种互联网帖子,我看到的很多代码看起来与此类似:
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
有人可以解释这段代码的工作原理吗?
答案 0 :(得分:4)
为什么人们坚持写所有这些?
def mactobinar(mac):
return binascii.unhexlify(mac.replace(':', ''))
答案 1 :(得分:1)
答案 2 :(得分:0)
好吧,我真的不是最好的屁股但生病了。
当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)))
Documanted版本
struct.pack(fmt, v1, v2, ...)
pack将实体转换为二进制格式。
希望这可以让你了解最新情况
以下是一些可以帮助您入门的内容:
http://docs.python.org/library/struct.html#format-characters