c#中的字节转换

时间:2016-01-01 17:08:47

标签: c#

使用此代码无法获得正确的结果。插入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);

2 个答案:

答案 0 :(得分:6)

单个无符号字节可以保存0到255或0x00到0xff的范围。 300大于256所以它"环绕"或者从0. 300 - 44 = 256再次开始计算,这是你的包裹。

答案 1 :(得分:6)

您刚刚经历过byte overflow。尝试使用实际上可以容纳您使用的数字的类型。

<强> [编辑]

看起来C#中的转换也可以checked

bval1 =  checked ((byte) val1);

并且当值太大时有适当的例外(OverflowException