我想将一定数量的位从一个变量复制到另一个变量的某个位置
示例:我有8位数据。我想提取该字节的高4位,并将其从位19转移到32位数据变量中。如何才能最好地做到这一点?
我尝试了以下操作,但似乎没有用。而不是19,我应该能够从零位置复制到偶数。

int bitPos=19;   // Position where the extracted data needs to be copied
int var1; //32 bit data
unsigned char testByte;
testByte&=0xF0;   // Lower nibbles not needed
testByte=testByte>>4; // Get only higher nibble
var1|=testByte<<bitPos;

最佳答案

我试图运行您的代码,它似乎正在工作。对于testbyte = 64,我得到var1 = 2097152。

可能是int不是您的平台的32位,我想不出任何其他原因。

10-04 22:01