每当我使用
Convert.ToInt32(byte[])
时,我都会遇到 invalidcastException,并且想知道我是否做错了什么,或者这是否是众所周知的事情。
为什么当该方法中没有支持 byte[] 的重载时,byte[] 不会抛出编译器错误?
因为有一个 overload 以
object
作为参数,而 byte[]
是 object
。这就是为什么你不会收到编译时错误。并且 Byte[]
不能转换为 Int32
这就是运行时异常的原因。
InvalidCastException:值未实现 IConvertible 接口。 -或者- 不支持转换。
BitConverter.ToInt32
方法将字节数组转换为 Int32
。
您无法使用
byte[]
将 Convert.ToInt32
转换为 int。
您需要 使用 BitConverter
。
区别在于 BitConverter 的构建正是为了完成您想要做的事情:获取字节数组并将它们转换为整数表示形式。
Convert.Int32
用于转换任何已经是整数的东西,或者可以使用 IConvertible
接口转换为整数。
Convert
只能用于实现 IConvertible
接口的类型。