【问题标题】:Convert int16 to 16 big-endian bit binary将 int16 转换为 16 位大端二进制
【发布时间】:2014-01-24 18:54:53
【问题描述】:

我有一个 short/int16 数组,我需要将其转换为填充的 16 位字符串(?)。我试过使用结构:

struct.pack('>H', 545)

我得到的:

'\x02!'

而我需要格式化为 16 位的东西。

有人知道怎么做吗?我很困惑,对二进制系统几乎一无所知。

干杯

【问题讨论】:

  • 该字符串包含两个字节,0x020x21。这两个字节为您提供了 545 的 16 位大端表示。这不是您想要的吗?

标签: python binary int short


【解决方案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?)表示模型有效性)。
猜你喜欢
  • 2017-09-27
  • 1970-01-01
  • 2018-11-25
  • 2017-01-18
  • 2021-03-09
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 2021-11-14
相关资源
最近更新 更多