我正在处理原始PCM音频数据(没有标题的PCM文件的音频数据)。
这个数据是以double的矢量形式提供给我的。
我想将此数据传递给另一个函数,此函数需要字节向量形式的音频数据。
我试过
Dim nBytes() As Byte = nDoubles.SelectMany(Function(d) BitConverter.GetBytes(d)).ToArray()
但这不会给出预期的结果。
我想我必须手动处理转换,但我不确定应该如何处理。
有人可以帮忙吗?
谢谢。
答案 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()