将变量作为另一种类型读取



我试图做的是从一个变量中获取存储的位,并基本上像在另一个变量一样读取它们。

假设我有一个名为temp的int值为10(二进制为1010)
我想把它读成一个布尔数组,给我[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.

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

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

现场演示

另一种方法只是使用逐位运算符:&|。例如:

#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();
}

最新更新