我正在使用矩阵创建器板,我正在尝试为他们的mic数组C ++代码创建一个python包装器。
该库有一个read函数,它返回一个包含128个样本的uint16_t
数组。
我正在尝试将它与 ALSA readi
函数进行比较,该函数将缓冲区写入用户作为参数传递给函数的char
数组。
问题是当单char
只有8位宽时, ALSA 如何将16位样本写入char数组?
我怎么能用uint16_t
数组做同样的事情并将它传递给python所以我会得到与 ALSA readi
函数相同的结果?
答案 0 :(得分:0)
uint16可以作为2个字节(uint8)传递,c ++代码可能使用联合,这样数据可以保存为uint16,而USB代码可以将数据作为字节传递。
至于python代码,这是我用来将8位字节转换为uint16的函数
def convert_int8_int16(self, byte_array):
new_array = [0]*(len(byte_array)/2)
for i in range(len(byte_array)/2):
new_array[i] = byte_array.pop(0)*256 + byte_array.pop(0)
return new_array
这将通过字节数组并将值添加到新的uint16数组。