将 16 位音频样本转换为字符

Converting 16 bit audio sample to char

我正在使用矩阵创建器板,我正在尝试为他们的麦克风阵列 C++ 代码制作一个 python 包装器。

库有一个读取函数,returns一个包含 128 个样本的 uint16_t 数组。

我试图将它与 ALSA readi 函数进行比较,该函数将缓冲区写入用户作为参数传递给的 char 数组函数。

问题是当单个char只有8位宽时,ALSA如何将16位样本写入char数组? 我怎么能用 uint16_t 数组做同样的事情并将它传递给 python 所以我会得到与 ALSA readi 函数相同的结果?

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 数组。