2010-06-05 130 views
1

我得到的错误在下面的代码无法转换类型的对象“System.Byte []”为类型“System.IConvertible”

Function ReadFile(ByVal sPath As String) As Byte 

    Dim data As Byte 
    data = Nothing 

    Dim fInfo As FileInfo 
    fInfo = New FileInfo(sPath) 

    Dim numBytes As Long 
    numBytes = fInfo.Length 

    Dim fStream As FileStream 
    fStream = New FileStream(sPath, FileMode.Open, FileAccess.Read) 

    Dim br As BinaryReader 
    br = New BinaryReader(fStream) 

    data = Convert.ToByte(br.ReadBytes(numBytes)) `getting error on this line` 
    Return data 
End Function 

回答

3

ReadBytes该函数将返回其要传递到的一个字节数组Convert.ToByte函数在运行时抛出异常,因为您无法将多个字节的数组转换为单个字节。根据你正在尝试完成的行动来解决问题将会有所不同。

1
  • 您已经将ReadFile定义为返回单个字节,如Byte。
  • ReadBytes返回一个字节数组,如Byte()。
  • 您不能将Byte()转换为Byte。
    • 字节(0)=字节
    • 字节<>字节()
  • Convert.ToByte接受一个对象。
  • 带有Option Strict Off的Visual Basic .NET将尝试通过调用Byte()数组上的System.IConvertible接口将Byte()(传递给Convert.ToByte的对象)转换为Byte,这将引发异常因为数组没有实现这个接口。

从你的函数实现中,很明显你想要返回所有的字节。因此,将ReadFile更改为返回Byte()并删除ToByte方法调用。

相关问题