【发布时间】:2016-01-11 21:32:13
【问题描述】:
我有以下示例代码:
UInt16 a = 0x3A;
UInt16 b = 0xFFDF;
UInt16 result = Convert.ToUInt16(a - b);
带有溢出异常的第 3 行错误。但是我想获得相同的结果,就像我会在 C 中减去 2 个无符号短裤并且它们上溢/下溢。
实现这一目标的最合适方法是什么?
【问题讨论】:
标签: c# integer-overflow
我有以下示例代码:
UInt16 a = 0x3A;
UInt16 b = 0xFFDF;
UInt16 result = Convert.ToUInt16(a - b);
带有溢出异常的第 3 行错误。但是我想获得相同的结果,就像我会在 C 中减去 2 个无符号短裤并且它们上溢/下溢。
实现这一目标的最合适方法是什么?
【问题讨论】:
标签: c# integer-overflow
您可以按如下方式屏蔽低 16 位:
UInt16 result = Convert.ToUInt16((a - b) & 0xffff);
【讨论】:
ushort result = unchecked((ushort)(a-b));