如何解决难以使用适用于 x86 和 armv7 的 struct.pack 格式
我不确定这是一个库错误还是我遗漏了什么,但以下代码不起作用:
import struct
import socket
struct.pack("<I",socket.CAN_EFF_FLAG)
struct.pack("<i",socket.CAN_EFF_FLAG)
在x86
上,前者有效,后者给出:
struct.error: 'i' format requires -2147483648 <= number <= 2147483647
在 armv7l
上,后者有效,但前者给出
struct.error: argument out of range
此外,hex(socket.CAN_EFF_FLAG)
给出:
'-0x80000000' # on armv7l
和
'0x80000000' # on x86
如果是库错误,我什至不确定哪个组件是错误的来源。是不是 CAN_EFF_FLAG
的值错了?
我越挖这个洞,我就越困惑:在手臂上,常数的符号是负的。我无法使用裸机表示来查看二进制补码编码。 bin(socket.CAN_EFF_FLAG)
只是给我一个预先加减号的 32 位数字。
(注意:我目前正在通过重新定义 CAN_EFF_FLAG = abs(socket.CAN_EFF_FLAG)
来缓解这种情况。这是一个丑陋的黑客,但它有效)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。