这是我想要做的:
我有两个整数
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/