如何从无符号变量中写入和读取字节

时间:2013-11-11 22:58:55

标签: c++ unsigned short binaries

这是我正在尝试做的事情:

我有两个整数

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

我也希望

unsigned short c

将变量存储在其中。

例如,如果我将 a 存储在 c 中,它将如下所示:

00000000
^ here is a

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

011000000
 ^^ here is b.

此外,我想在写完这些数字后再阅读这些数字。 我怎么能这样做?

感谢您的建议。

2 个答案:

答案 0 :(得分:3)

假设这些是数字的二进制表示,并假设你真的打算在b的右边有五个零

01100000
 ^^ here is b

(a 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;

答案 1 :(得分:0)

您可以使用C++ Bit Fields完成此操作:

struct MyBitfield
{
    unsigned short a : 1;
    unsigned short b : 2;
};
MyBitfield c;
c.a = // 0 or 1
c.b = // 0 or 1 or 2 or 3