将音频双精度转换为字节

时间:2015-09-25 18:31:56

标签: vb.net audio type-conversion

我正在处理原始PCM音频数据(没有标题的PCM文件的音频数据)。

这个数据是以double的矢量形式提供给我的。

我想将此数据传递给另一个函数,此函数需要字节向量形式的音频数据。

我试过

    Dim nBytes() As Byte = nDoubles.SelectMany(Function(d) BitConverter.GetBytes(d)).ToArray()

但这不会给出预期的结果。

我想我必须手动处理转换,但我不确定应该如何处理。

有人可以帮忙吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

由于另一个函数所需的格式是16位,48 kHz,这与源数据相同,因此将源转换为Short数组的简单情况,然后将其序列化为字节数组。

您建议的代码问题是错过了第一步,因此它基本上序列化了Double数组。但是,您可以在第二步重复使用它。所以,你可以这样做:

    Dim nShorts() As Short = New Short(nDoubles.Length - 1) {}

    For i = 0 To nDoubles.Length - 1
        nShorts(i) = Convert.ToInt16(nDoubles(i))
    Next

    Dim nBytes() As Byte = nShorts.SelectMany(Function(s) BitConverter.GetBytes(s)).ToArray()