【发布时间】:2017-08-21 16:27:12
【问题描述】:
我正在使用矩阵创建板,我正在尝试为他们的麦克风数组 C++ 代码制作一个 python 包装器。
该库有一个读取函数,它返回一个包含 128 个样本的 uint16_t 数组。
我正在尝试将其与 ALSA readi 函数进行比较,该函数将缓冲区写入用户作为参数传递给函数的 char 数组。
问题是,当单个char 仅 8 位宽时,ALSA 如何将 16 位样本写入 char 数组?
我怎么能对 uint16_t 数组做同样的事情并将它传递给 python,所以我会得到与 ALSA readi 函数相同的结果?
【问题讨论】:
-
您的 16 位样本数据是 16 位字的序列。
char的数组是一个 8 位字的序列。 128 个 16 位字的数组等于 256 个 8 位字的数组。没有进行“转换”,只是从一个数组复制到另一个数组。 -
你可以使用
memcpy -
我使用了 memcpy 但现在的问题是当我将 char 数组返回给 python 并将其从 char 指针转换为字符串时,长度会发生变化,所以现在有时字符串的长度小于 256 个字符并且它在 0 到 70 之间跳跃