将变量读取为另一种类型

时间:2014-09-18 07:52:39

标签: c++

我想要做的是从变量中存储的位,并基本上读取它们就好像它们在另一个变量中一样。

假设我有一个名为 temp 的int值10(二进制1010) 我想能够读出它作为一个bool数组,给我[0] = 1,[1] = 0,[2] = 1,[3] = 0等等。(我可能会得到很多事实上前面的0,由于int的大小,但是meh,这只是一个例子。)

我尝试制作所需类型的指针,将其指定给int的地址但没有成功。我也看了谷歌,但似乎我不知道这种做法的名称,因为我找不到任何相关的。

编辑:在伪代码中,我的目标看起来像这样。

variable _t_'s bytes are equal to 1001010101000111.

if the last 4 bytes are equal to 0111: do stuff.

if the first 4 bytes are equal to 0000: do some more stuff.

etc.

2 个答案:

答案 0 :(得分:3)

对于您的特定示例,您可以使用std::bitset,例如:

#include <bitset>

int n = 10;
std::bitset<32> s(n);

LIVE DEMO

答案 1 :(得分:1)

另一种方法是使用按位运算符:&amp; |。例如:

#define FLAG_IS_ALIVE 0x1;
#define FLAG_IS_DANGEROUS 0x2;
#define FLAG_IS_TOUCHABLE 0x4;
#define FLAG_IS_FLUFFY 0x8;
#define FLAG_CAN_BARK 0x10;
...

int kittenFlags = FLAG_IS_ALIVE | FLAG_IS_FLUFFY;
int doggyFlags = FLAG_IS_ALIVE | FLAG_IS_DANGEROUS | FLAG_CAN_BARK;

int someFlags = ...;
if (someFlags & FLAG_IS_FLUFFY && !(someFlags & FLAG_IS_DANGEROUS))
{
    stroke(); cuddle();
}