gpt4 book ai didi

python - 将 struct.unpack 从 python 2.7 移植到 3

转载 作者:太空狗 更新时间:2023-10-30 02:58:27 24 4
gpt4 key购买 nike

以下代码在 python 2.7 中运行良好:

def GetMaxNoise(data, max_noise):
for byte in data:
noise = ComputeNoise(struct.unpack('=B',byte)[0])
if max_noise < noise:
max_noise = noise
return max_noise

其中数据是一个包含二进制数据的字符串(取自网络数据包)。

我正在尝试将它移植到 Python 3,我得到了这个:

File "Desktop/Test.py", line 2374, in GetMaxNoise

noise = ComputeNoise(struct.unpack('=B',byte)[0])

TypeError: 'int' does not support the buffer interface

如何将“数据”转换为 unpack() 所需的适当类型?

最佳答案

假设 data 变量是您从网络数据包上的二进制文件中获得的字节串,它在 Python2 和 Python3 中的处理方式不同。

在Python2中,它是一个字符串。当您迭代它的值时,您会得到单字节字符串,您可以使用 struct.unpack('=B')[0]

将其转换为 int

在Python3中,它是一个bytes对象。当你迭代它的值时,你直接得到整数!所以你应该直接使用:

def GetMaxNoise(data, max_noise):
for byte in data:
noise = ComputeNoise(byte) # byte is already the int value of the byte...
if max_noise < noise:
max_noise = noise
return max_noise

关于python - 将 struct.unpack 从 python 2.7 移植到 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com