每当我使用Convert.ToInt32(byte[])
时,我都会得到一个invalidcastexception,并且想知道我是否做错了,如果这是众所周知的事情。
为什么在此方法中没有支持byte []的重载时,byte []不会抛出编译器错误?
答案 0 :(得分:4)
因为overload有object
作为参数而byte[]
是object
。这就是为什么你没有得到编译时错误的原因。并且Byte[]
无法转换为Int32
,这就是运行时异常的原因。
InvalidCastException :value未实现IConvertible接口。 -要么- 不支持转换。
相反,您需要使用BitConverter.ToInt32
方法将字节数组转换为Int32
。
答案 1 :(得分:2)
您无法使用byte[]
将Convert.ToInt32
转换为int。
您需要use a BitConverter
。
不同之处在于BitConverter的构建完全符合您的要求:获取字节数组并将其转换为整数表示形式。 Convert.Int32
用于转换已经是整数的任何内容,或者可以使用IConvertible
接口转换为整数。
Convert
只能用于实现IConvertible
接口的类型。