You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从IP地址获取MAC地址:Python 3.6.4代码转换字节报错求助

解决TypeError:descriptor 'encode'需要'str'对象而非'list'的问题

嘿,我明白你现在的困扰啦!你遇到的这个错误很典型——你尝试直接对整个IP列表调用str.encode(),但这个方法只能作用在单个字符串上,而不是列表对象,所以Python就报错了。

错误原因拆解

你写的代码大概是类似这样的:

ip_addresses = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
ip_addresses_as_bytes = str.encode(ip_addresses)  # 这里直接传了列表,所以报错

str.encode()是字符串的实例方法,需要调用在单个字符串上,而不是把列表作为参数传给它。

正确的处理方式

你需要遍历IP列表里的每一个元素,对单个IP字符串分别进行编码操作,有两种常用的方式:

方式1:使用for循环逐个处理

ip_addresses = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
ip_addresses_as_bytes = []

for ip in ip_addresses:
    # 对每个IP字符串调用encode(),默认用utf-8编码,你也可以指定编码格式
    ip_bytes = ip.encode()
    ip_addresses_as_bytes.append(ip_bytes)

print(ip_addresses_as_bytes)

方式2:使用列表推导式(更简洁)

如果你喜欢更Pythonic的写法,列表推导式可以一行搞定:

ip_addresses = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
ip_addresses_as_bytes = [ip.encode() for ip in ip_addresses]

额外提示

如果你是要获取MAC地址,后续可能会用到类似arp命令或者第三方库(比如scapy),编码后的字节数据可以直接用于这些操作啦。

内容的提问来源于stack exchange,提问作者Clownfused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:39:54