c# - 有没有一种简单的方法可以将 32 位整数转换为 16 位整数?

标签 c# int type-conversion

我有一个 32 位 int,我只想处理这个变量的下半部分。我知道我可以转换为位数组和 int16,但是有没有更直接的方法来做到这一点?

最佳答案

如果你只想要下半部分,你可以直接转换它:(Int16)my32BitInt

一般来说,如果您像这样扩展/截断位模式,那么您确实需要注意有符号类型 - 无符号类型可能会导致更少的意外。

如评论中所述 - 如果您将代码包含在“已检查”上下文中,或者更改了编译器选项以便默认为“已检查”,那么您无法无一异常(exception)地截断这样的数字如果有任何非零位被丢弃,则被抛出 - 在这种情况下你需要做:

(UInt16)(my32BitInt & 0xffff)

(在这种情况下,使用签名类型的选项消失了,因为您必须使用 & 0x7fff,然后只保留 15 位)

关于c# - 有没有一种简单的方法可以将 32 位整数转换为 16 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378507/

相关文章:

C# 'could not found' 现有方法

c# - 有限制的 ConcurrentDictionary

c# - 命名空间 'Window' 中不存在类型或命名空间名称 'System.Windows'

c - c中如何存储整数和字符

c++ - 为什么int和float之和是int?

java - 比较参数类型

c# - 如何将列添加到 DataReader

Java:比较整数之谜

c# - 从整数列表中获取随机数

c# - 第三方类的 TypeConverter 属性