这是我想要做的:

我有两个整数

int a = 0; // can be 0 or 1
int b = 3; // can be 0, 1, 2 or 3


我也想拥有

unsigned short c


将该变量存储在其中。

例如,如果我要存储一个内部c,它将看起来像这样:

00000000
^ here is a


然后我需要将b存储在c中。它应该如下所示:

011000000
 ^^ here is b.


我也想在写完这些数字后再读一遍。
我怎样才能做到这一点?

感谢您的建议。

最佳答案

假设这些是数字的二进制表示形式,并且假设您真的要在b的右边有五个零

01100000
 ^^ here is b


(a和b重叠的方式)

那这是怎么做的

// write a to c
c &= ~(1 << 7);
c |= a << 7;

// write b to c
c &= ~(3 << 5);
c |= b << 5;

// read a from c
a = (c >> 7)&1;

// read b from c
b = (c >> 5)&3;

关于c++ - 如何从无符号变量中写入和读取字节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19917673/

10-13 21:54