难以使用适用于 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...