c# - 添加到字节而不溢出

对于某些 API 集成,我有一个操作需要添加两个字节并得到一个字节作为结果。这是某种校验和。现在自然会发生溢出。

例如

byte a = 0xff
byte b = 0x01
byte results = a + b;

是否有简单的内置语法来避免溢出以继续处理下一个字节,还是我必须自己执行此操作?例如减去完整字节等等? 没有为此找到 API,我是不是忽略了什么?

最佳答案

然而,当您添加 byte 时,结果是 int,例如

byte a = 100;
byte b = 200;

var result = a + b; // result == 300

由于 ab 都在 0..255 范围内,因此结果将在 0..510 范围并且不可能发生整数溢出。但是您想要 byte result,这就是您需要强制转换的原因:

byte result = (byte) (a + b);

在这里,.net 可以显示两种类型的 react :

  • 检查 ans throw overflow exception
  • 检查并忽略溢出:256 -> 0257 -> 1

我们想要第二个选项,这就是为什么未选中:

byte result = unchecked((byte) (a + b));

https://stackoverflow.com/questions/70063130/

相关文章:

javascript - 为什么不重新分配 forEach 中的参数元素起作用

angular - 类型错误 : Cannot read properties of undefin

kotlin - 我正在尝试使用 Jetpack Compose 在 Android 中设置背景图片

angular - "declare global{ interface Window{ analy

python - 如何从带日期的字符串列表中过滤掉字符串?

typescript - 如何防止将 Prop 传递给内部样式组件

python - 返回 boolean 数组中 "false"值的索引

angular - 我需要取消订阅 Angular Observable 吗?

python - 在 Numpy 或 Pandas 中的每一行之后插入相似行(只有一列发生变化)的有

scala - Scala 3 中的递归高阶函数类型