【发布时间】:2018-10-06 13:29:45
【问题描述】:
我正在处理一个数据集,其中一些数据以 INT(2) 格式存储。我需要将其转换为二进制(16 位)以通过 python 以有意义的方式读回数据。
我目前正在使用:
format(value, '016b')
将 int 转换为二进制以读回位。因此,我正在寻找简单的验证,以确认我正在使用的类型是正确的(因为我看到的输出与文档中的预期输出不太一致)。
例如,根据上述描述,这些转换后的值是否有意义?
2369 -> 0000100101000001
18767 -> 0100100101001111
【问题讨论】:
-
INT(2)是什么意思?它可能被定义为一些网络或文件格式标准的一部分,或者一些软件的文档,或者一些其他语言参考,或者……什么。但是有很多来自不同地方的类似名称的东西,所以我们需要知道你使用的是哪一个。理想情况下链接并引用实际文档。 -
无论如何,大多数说他们想要“16 位二进制”的东西都不想要一个由 16 个
1和0字节组成的字符串;他们想要两个字节。您可能想要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 系列和/或单行数据帧,而不必担心细节。