将整数转换为字节但不溢出

kni*_*ttl 3 .net c# byte integer casting

如何在C#中将整数值转换/转换为字节值但不包围或抛出异常?我正在寻找的是某种bool byte.TryConvert(int i, out b)方法.

我试过Convert.ToByte并指挥演员.

byte b = Convert.ToByte(257); // throws OverflowException
byte b = (byte)257; // results in 1
byte b = (byte)(-1); // results in 255
Run Code Online (Sandbox Code Playgroud)

或者我必须将"反向转换"(缺少更好的词)字节转换为int并将其与原始值进行比较?

Mar*_*ell 7

在我的具体用例中,我实际上是一个可以为空的字节类型....有这样的方法如bool byte.TryConvert(int i,out b)?

不,您必须做以下事情:

byte? result = (value >= byte.MinValue && value <= byte.MaxValue)
             ? (byte)value : (byte?)null;
Run Code Online (Sandbox Code Playgroud)