【问题标题】:Int(2) to 16 bit conversion pythonInt(2) 到 16 位转换 python
【发布时间】:2018-10-06 13:29:45
【问题描述】:

我正在处理一个数据集,其中一些数据以 INT(2) 格式存储。我需要将其转换为二进制(16 位)以通过 python 以有意义的方式读回数据。

我目前正在使用:

format(value, '016b')

将 int 转换为二进制以读回位。因此,我正在寻找简单的验证,以确认我正在使用的类型是正确的(因为我看到的输出与文档中的预期输出不太一致)。

例如,根据上述描述,这些转换后的值是否有意义?

2369 -> 0000100101000001

18767 -> 0100100101001111

【问题讨论】:

  • INT(2) 是什么意思?它可能被定义为一些网络或文件格式标准的一部分,或者一些软件的文档,或者一些其他语言参考,或者……什么。但是有很多来自不同地方的类似名称的东西,所以我们需要知道你使用的是哪一个。理想情况下链接并引用实际文档。
  • 无论如何,大多数说他们想要“16 位二进制”的东西都不想要一个由 16 个 10 字节组成的字符串;他们想要两个字节。您可能想要 value.to_bytes(2, 'big', signed=True) 或其他一些标志组合(或 struct.pack('>h', value) 或其他结构标志组合,如果您需要 Python 2 兼容性)。
  • 文档将其描述为 2 字节整数。此外,它以 HDF5 格式存储,在检查数据字段时,我查看了它的元数据,上面写着:16 位整数,valid_range (0,32767)。我想在这种情况下我确实想要 16 位二进制,而不是两个字节,因为我需要检查各个位
  • 首先,将其放在问题中,而不是在评论中。其次,虽然这确实告诉了我们一些事情,但它并没有告诉我们我问的所有问题,也没有告诉我们足够的信息来解决问题,而无需根据人们通常使用 HDF5 所做的事情进行一些猜测。此外,如果您有一些代码可以读取一些元数据并执行相关操作,请向我们展示该代码及其输出,以及您卡在哪里,而不是让事情变得模糊。请参阅minimal reproducible example 和其他有关如何写出好问题的帮助文章——不幸的是,在没有帮助的情况下如何有效地使用 StackOverflow 并不明显。
  • 另外,如果您想要做的只是解析和/或生成一些 HDF5 数据,那么有些库可以为您完成所有困难的工作。例如,您可以将整个 HDF5 文件读入 Pandas 系列和/或单行数据帧,而不必担心细节。

标签: python binary int


【解决方案1】:

是的,他们有。事实上:

1x2^0 + 1x2^6 + 1x2^8 + 1x2^11 = 1 + 64 + 256 + 2048 = 2369

1x2^0 + 1x2^1 + 1x2^2 + 1x2^3 + 1x2^6 + 1x2^8 + 1x2^11 + 1x2^14 =
1 + 2 + 4 + 8 + 64 + 256 + 2048 + 16384 = 18767

【讨论】:

    猜你喜欢
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2011-08-14
    相关资源
    最近更新 更多