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

socket读取数据后bytearray.append报'bytes' object cannot be interpreted as an integer如何解决

问题原因

bytearray.append() 方法仅接受 0~255 范围内的整数作为参数,而 socket.recv(n) 方法无论接收多少字节,返回值始终是 bytes 类型对象。你调用 recv(1) 得到的 b'\x01' 是长度为1的bytes对象,不是整数,因此传入append方法时触发类型错误。

可行解决方案
  • 方案1(最小改动适配现有逻辑):取bytes对象的首位元素传入append,修改报错行即可:
    bytemessage.append(b[0])
    
  • 方案2(兼容性更强,支持后续调整单次接收字节数):使用bytearray.extend()方法,该方法可直接接收bytes类型对象:
    bytemessage.extend(b)
    
    后续如果调整为单次接收更多字节(比如s.recv(1024)提升性能),这行代码无需修改即可正常运行。
  • 方案3:使用+=运算符直接拼接,效果和extend完全一致:
    bytemessage += b
    
额外注意事项

你贴出的示例代码中函数定义存在语法错误,def receiveData 后需要补充括号,修正为 def receiveData(): 才能正常执行。

内容的提问来源于stack exchange,提问作者Yusuf Altıparmak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:18:03