File "C:\Users\admin\AppData\Local\Programs\Python\Python311\Lib\encodings\hex_codec.py", line 19, in hex_decode return (binascii.a2b_hex(input), len(input)) ^^^^^^^^^^^^^^^^^^^^^^^ TypeError: argument should be bytes, buffer or ASCII string, not 'list'
时间: 2023-07-21 14:10:51 浏览: 192
TypeError: int() argument must be a string, a bytes-like object or a number, not ‘tuple’
5星 · 资源好评率100%
根据您提供的错误信息,问题出在 `binascii.a2b_hex()` 函数的参数上。该函数期望的参数是一个 bytes、buffer 或 ASCII 字符串,而不是一个列表。
通过观察之前的代码,可以看出问题出现在 `buflist.insert()` 的参数上。`buflist.insert()` 方法在指定位置插入了一个列表作为元素,而不是一个字符串。
为了解决这个问题,您可以将列表转换为字符串,然后再传递给 `buflist.insert()` 方法。您可以使用 `join()` 方法将列表中的元素连接成一个字符串。
下面是修改后的代码:
```python
for j in range(len(buflist)):
if buflist[j] == '00' and buflist[j + 1] == '4A':
buflist.insert(j + 56, ''.join(['00', '04', '08', '00', '00', '06', '0D', '02', '00', '4A', '00', '06', '0E', '02', '00', '00', '00', '2C', '10', '03', '00', '04', '11', '00']))
print(buflist)
```
请注意,我将列表元素使用 `join()` 方法连接成了一个字符串,并将其传递给 `buflist.insert()` 方法。现在,您应该能够避免 TypeError 错误了。如果还有其他问题,请提供更多的信息。
阅读全文