Ami*_*hen 3 c# int type-conversion
我有一个32位的int,我只想解决这个变量的下半部分.我知道我可以转换为位数组和int16,但有没有更直接的方法来做到这一点?
你只需要下半部分,你可以投下它: (Int16)my32BitInt
通常,如果您正在扩展/截断这样的位模式,那么您需要注意签名类型 - 无符号类型可能会导致更少的意外.
正如评论中所提到的 - 如果您已将代码包含在"已检查"上下文中,或者更改了编译器选项以使默认值为"已检查",那么您不能截断这样的数字而不会抛出异常,如果有任何非零位被丢弃 - 在这种情况下你需要这样做:
(UInt16)(my32BitInt & 0xffff)
Run Code Online (Sandbox Code Playgroud)
(在这种情况下,使用签名类型的选项已经消失,因为你必须使用& 0x7fff它然后只保留15位)