尝试将single()转换为byte()时出现Array.Copy错误

时间:2015-07-22 01:34:11

标签: arrays vb.net type-conversion

我想通过操作编辑一些音频/波形数据,我已将音频数据读取为单个()。

现在,在操作之后,我想将其写入新的音频文件。 为此,我想将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总是会抛出错误。 有人看到我的错误吗? 谢谢。

1 个答案:

答案 0 :(得分:2)

是的,它会引发TypeMismatchException,因为srcArray类型和destArray类型存在差异。实际上,这不是关于复制single数组。我认为您必须使用StreamSystem.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