Java字节数组转Python实现报错,求正确转换方法
解决Java转Python的字节转字符串问题
核心原因
Java的byte是8位有符号类型(范围-128127),当把大于256的整数强制转换为`byte`时,Java会自动截断取低8位二进制值,再按有符号规则解析。而Python的`bytes`只接受0255的无符号字节值,这就是你报错的根本原因。
正确转换逻辑
你需要先把每个整数模拟Java的byte强制转换规则,得到对应无符号字节值:
- 对每个整数执行
num & 0xFF操作,直接提取低8位的无符号数值(等价于先按Java规则转成有符号byte,再转成Python兼容的无符号值) - 用这些值构建
bytes对象后解码为字符串
正确代码实现
# 模拟Java的(byte)转换,提取低8位无符号字节 bytes_data = bytes([23353 & 0xFF, 333 & 0xFF, 614537057 & 0xFF]) x = bytes_data.decode('utf-8') print(x) # 输出:9Ma
数值验证
- 23353 & 0xFF = 57 → 对应ASCII字符'9'
- 333 & 0xFF = 77 → 对应ASCII字符'M'
- 614537057 & 0xFF = 97 → 对应ASCII字符'a'
解码后结果和Java完全一致。
内容的提问来源于stack exchange,提问作者john098
相关产品推荐
相关产品推荐

