将 int16 转换为 16 位大端二进制
Posted
技术标签:
【中文标题】将 int16 转换为 16 位大端二进制【英文标题】:Convert int16 to 16 big-endian bit binary 【发布时间】:2014-01-24 18:54:53 【问题描述】:我有一个 short/int16 数组,我需要将其转换为填充的 16 位字符串(?)。我试过使用结构:
struct.pack('>H', 545)
我得到的:
'\x02!'
而我需要格式化为 16 位的东西。
有人知道怎么做吗?我很困惑,对二进制系统几乎一无所知。
干杯
【问题讨论】:
该字符串包含两个字节,0x02
和 0x21
。这两个字节为您提供了 545 的 16 位大端表示。这不是您想要的吗?
【参考方案1】:
是 16 位。 '\x02'
是 8 位,!
是另外 8 位。
您在寻找'0000001000100001'
吗?如果是这样,您可以使用 format
函数:
>>> format(545, '016b')
'0000001000100001'
0
表示“用零填充”,16
表示“至少显示 16 位数字”,b
表示二进制。
如果你不需要零填充,你可以使用bin
:
>>> bin(545)
'0b1000100001'
>>> bin(545)[2:]
'1000100001'
【讨论】:
只是为了更清楚: 545 十进制 -> 00000010 00100001 二进制。 00000010 -> 0x02, 00100001 二进制 -> 33 十进制 ->!
ascii
啊,是的,但我需要将其格式化为1000100001
?我需要“完整”表示吗?
@JamesBrennan:你的意思是'1000100001'
,还是'0000001000100001'
?你确定你知道你想要什么吗?你能给我们一些背景信息吗?
嗨,是的!就是这样。我不是特别清楚。我需要 16 长度表示,因为二进制表示数据质量的描述性表示(例如,第 4 位(16?)表示模型有效性)。以上是关于将 int16 转换为 16 位大端二进制的主要内容,如果未能解决你的问题,请参考以下文章