c# uint 到 ushort 溢出,就像在 native C 中一样

标签 c# integer-overflow

我有以下示例代码:

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

第 3 行出现溢出异常的错误。但是我想获得相同的结果,就像我在 C 中减去 2 个无符号短裤并且它们溢出/下溢。

实现这一目标的最合适方法是什么?

最佳答案

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

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

关于c# uint 到 ushort 溢出,就像在 native C 中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731489/

相关文章:

c - C标准是否对INT_MIN和INT_MAX之间的关系做出保证?

c - 如果 LONG_MAX 为 2147483647,strtol ("-2147483648", 0, 0) 是否溢出?

ios - 声明字典 [字符串 :AnyObject] with overflowing Integers

c# - 从 Entity Framework 选择语句中排除某些列

c# - 哪个更快地读取 XML 文件或查询数据库

c# - 如何使用 Office Open XML SDK 2.0 获取列标题列表?

c - 为什么 1024*1024*1024*2 != 1024*1024*1024*2

c# - 在延续链中传播异常的正确方法是什么?

c# - 我已经插入了一行,我想获取它的 ID 并加上一个 int 并插入到该行中

c++ - 在 C/C++ 中检测有符号溢出