c#字节添加溢出
本文关键字:溢出 添加 字节 | 更新日期: 2023-09-27 18:07:09
我注意到当Byte + Byte时,它会产生int,是否有可能让字节a +字节b并产生255,如果它溢出?
Byte a=200;
Byte b=200
Byte output = (a+b); // now output equals 144, I want 255
这个(未经测试)怎么样?
byte output = (byte)(Math.Min(a + b, Byte.MaxValue));
这通常发生在非 checked
语句中的数字溢出时。
如果你想让它产生255,那么我能想到的最简单的选择是使用三元运算:
byte output = (int)a + (int)b > byte.MaxValue ? byte.MaxValue : a + b;
由于a + b
是int
类型,您可以轻松检查:
Byte a = 200;
Byte b = 200
byte result = a + b > byte.MaxValue ? byte.MaxValue : (byte) (a + b);
这会抛出OverflowException:
checked
{
Byte a=200;
Byte b=200
Byte output = (a+b);
}
这样你就可以捕获并处理它了:
Byte output;
try
{
checked
{
Byte a=200;
Byte b=200
output = (a+b);
}
}
catch(OverflowException e)
{
output = Byte.MaxValue;
}
Console.WriteLine(output);
但是我建议你自己控制你的心流。捕获异常是一种糟糕的方法,但如果您有复杂的计算,它可能会很麻烦。用Math代替:
var output = (Byte)Math.Min((int)a+b, Byte.MaxValue);