【发布时间】:2014-11-05 01:08:57
【问题描述】:
如何在 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
或者我是否必须将字节“反向转换”(因为没有更好的词)到 int 并将其与原始值进行比较?
【问题讨论】:
-
也许是个愚蠢的问题,但是是什么阻止了您在进行强制转换之前检查您的 int 是否大于 255?
-
您的预期结果是什么? (当然,从 256(预编辑)转换的结果是 0,而不是 1?)
-
@MarcGravell:预期结果是
null(对于我的用例)。如果转换/转换成功则返回 true 并且转换失败则返回 false 的方法是最好的(如果 .NET 框架中已经存在这样的函数)。 -
从您的问题来看,如果整数超出 0 - 255 范围,您想要的结果并不明显。
-
@knittl
null不是byte的有效值,因此您不能这样做;你需要使用byte?或类似的
标签: c# .net casting integer byte