You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:57:06