打破一个32位整数,并使用后半部分16位形成一个整数

Craig Zheng

我正在制作一个从服务器下载32位整数的应用程序,并将第一个16位和第二个16位用于不同的目的...

我负责第二个16位,应该使用它来形成一个int,我知道我应该使用按位运算来做到这一点,但无法实现,下面是我正在使用的代码,请给我更多信息。

        //CID is a 32bit integer, in nslog it shows as 68913219 - its different for every user
        Byte lowByte = (CID>>16)&0xFF; //the 3rd byte
        Byte highByte = (CID>>24)&0xFF; //the 4th byte
        uint16_t value = lowByte & highByte; //combine, but the result is 0.
谢尔盖·卡里尼琴科(Sergey Kalinichenko)
uint16_t value = lowByte & highByte; //combine, but the result is 0.

这不是将两个字节合并为一个字节的方式uint16_t:将AND它们放在适当的位置,同时需要移位高字节和OR低字节:

uint16_t value = lowByte | (((uint16_t)highByte) << 8);

但是,这在可读性方面不是最佳的:如果您以32位整数开头,并且需要切掉高16位,则可以简单地移位16位,并用0xFFFF-屏蔽,即切出的方式相同第三个字节,但带有16位掩码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

完成一个交换整数数组的前半部分和后半部分的方法

两个 16 位整数到一个 32 位浮点值

从一个整数形成位模式

哈希一个32位整数比对3个16位整数进行哈希运算要慢?

如何用八(8)个4位整数创建一个32位整数?

用两个32位整数“模拟”一个64位整数

用两个无符号的16位整数表示一个无符号的32位值

显示一个19位整数

要找到一个数是素数,为什么要检查直到n / 2更好。在n的后半部分避免麻木的原因是什么

检查整数是另一个整数的位旋转

为什么将两个32位整数合并为一个64位整数?

将四个8位无符号整数合并为一个32位无符号整数

将两个32位整数的向量相乘,生成一个32位结果元素的向量

汇编:使用两个32位寄存器中的值进行除法,就好像它们是一个64位整数一样

如何创建一个128位整数文字

C# 更改 GUID 的第一个 32 位整数

将整数的位X设置为另一个整数的Y位而不分支?

一个人可以在64位计算机上使用4位,8位,16位或32位大小的指针吗?

当一个值可能太大而无法完全适合另一个类型时,比较一个32位浮点数和一个32位整数而不转换为双精度

将两个32位整数转换为一个带符号的64位整数字符串

如何将一个无符号长整数(32位)拆分为8个半字节?

给定一个包含43.0亿个32位整数的文件,我们如何找到一个至少出现两次的数字?

是否有一个非循环的无符号32位整数平方根函数C

尝试从另一个进程读取32位整数时,ReadProcessMemory使应用程序崩溃

如果我有一个8位值,那么使用8位寄存器代替16、32或64位有什么好处?

从一个整数中获取n个最低有效位

在一个程序中结合使用32位和64位驱动程序

从16个1位ALU中创建一个16位ALU(结构代码)

使用递归函数反转数组的后半部分

TOP 榜单

热门标签

归档