将字节数组转换为Python的最佳方法是什么?

jgovgodb  于 2023-11-20  发布在  Python
关注(0)|答案(2)|浏览(154)

我尝试了几种方法将这个Java指令转换为python,但总是得到一些错误或错误的输出。正确的方法是什么?
String x = new String(new byte[]{(byte) 23353, (byte) 333, (byte) 614537057});(x等于字符串“9Ma”)
我尝试x = bytes([23353, 5682, 10310]).decode('utf-8')但结果是:ValueError:byte must be in range(0,256)

ddarikpa

ddarikpa1#

正如错误所说,你不能将大于255的值传递给bytes()函数。但是,你可以传递%256值:

byte_values = [23353, 333, 614537057]
x = "".join(chr(value % 256) for value in byte_values)
print(x)

字符串
上面的代码在我这边打印9Ma
但是,我建议您从功能上验证Java代码所做的事情,因为它是将上述从intbyte的转换简化为byte,而不是直接生成正确的字节。

jpfvwuh4

jpfvwuh42#

因为一个字节是8位长,十进制的最大值是256。在Java中,它会把你数字的第一个字节转换成整数。

相关问题