我想通过操作编辑一些音频/波形数据,我已将音频数据读取为单个()。
现在,在操作之后,我想将其写入新的音频文件。 为此,我想将singles()写为bytes()。
我正在尝试将singles()转换为bytes(),但总会出错。
我正在尝试
Public Overridable Overloads Sub Write(ByVal uSingles() As Single)
Dim nBytes(uSingles.Length * 4) As Byte
Array.Copy(uSingles, nBytes, uSingles.Length)
(...)
但是Array.Copy总是会抛出错误。 有人看到我的错误吗? 谢谢。
答案 0 :(得分:2)
是的,它会引发TypeMismatchException
,因为srcArray
类型和destArray
类型存在差异。实际上,这不是关于复制single
数组。我认为您必须使用Stream
(System.IO.MemoryStream
)才能生成byte()
数组。
我建议这样的事情:
Public Function Write(ByVal uSingles() As Single) As Byte()
Using ms As New MemoryStream
Using bw As New BinaryWriter(ms)
For Each no In uSingles
bw.Write(no)
Next
End Using
Return ms.ToArray()
End Using
End Function