使用此代码无法获得正确的结果.插入300作为int后,我得到44作为转换后的字节值.
我期待255,因为这是最接近300.
Console.Write("Enter int value - "); val1 = Convert.ToInt32(Console.ReadLine()); // converting int to byte bval1 = (byte) val1; Console.WriteLine("int explicit conversion"); Console.WriteLine("byte - {0}", bval1);
小智.. 6
单个无符号字节可以保存0到255或0x00到0xff的范围.300大于256所以它"环绕"或从0. 300 - 44 = 256再次开始计数,那就是你的包裹.
单个无符号字节可以保存0到255或0x00到0xff的范围.300大于256所以它"环绕"或从0. 300 - 44 = 256再次开始计数,那就是你的包裹.
您刚刚遇到字节溢出.尝试使用实际上可以容纳您使用的数字的类型.
[编辑]
它看起来也可以在C#中检查转换:
bval1 = checked ((byte) val1);
OverflowException
当值太大时,有适当的异常()