我尝试了几种方法将这个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)
我尝试了几种方法将这个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)
2条答案
按热度按时间ddarikpa1#
正如错误所说,你不能将大于
255
的值传递给bytes()
函数。但是,你可以传递%256
值:字符串
上面的代码在我这边打印
9Ma
。但是,我建议您从功能上验证Java代码所做的事情,因为它是将上述从
int
到byte
的转换简化为byte
,而不是直接生成正确的字节。jpfvwuh42#
因为一个字节是8位长,十进制的最大值是256。在Java中,它会把你数字的第一个字节转换成整数。