将二进制数组转换为int16

时间:2017-03-02 14:29:08

标签: python arrays numpy

阵列是波形。当每个字节为1个样本时,我可以轻松地将二进制数组转换为int8。使用12bit时,我可以设置仪器为每个样本发送2字节(字模式)。我一直在网上看到将2bytes / sample二进制数组转换为int16向量,但到目前为止还没有。 这适用于每个样本1个字节

data = numpy.fromstring(dataword, dtype=numpy.int8)

使用unpack

data = numpy.array(unpack('%sb' %len(dataword) ,dataword))

无法弄清楚如何使用2bytes / sample。 感谢

1 个答案:

答案 0 :(得分:0)

而不是像这样使用struct.unpack

data = numpy.array(unpack('%sb' %len(dataword) ,dataword))

您应该像这样使用它:

data = numpy.array(unpack('%sh' % len(dataword) / struct.calcsize('h'), dataword))
#----------------------------^ notice the 'h', signed short, 16 bits

您必须将len(dataword)除以您正在读取的数字大小,在本例中为两个字节。最好使用calcsize,但如果您已经知道,只需将其除以2。