c#uint无法像在原生c中那样处理溢出

本文关键字:处理 溢出 原生 c#uint | 更新日期: 2023-09-27 18:29:55

我有以下一段示例代码:

UInt16 a = 0x3A;
UInt16 b = 0xFFDF;
UInt16 result = Convert.ToUInt16(a - b);

第3行出现错误,出现Overflow异常。然而,我想获得相同的结果,就像我在C中减去2个无符号短路,它们上/下溢一样。

实现这一目标的最恰当方法是什么?

c#uint无法像在原生c中那样处理溢出

您可以按如下方式屏蔽较低的16位:

UInt16 result = Convert.ToUInt16((a - b) & 0xffff);