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

C++ 将变量作为另一种类型读取,c++,C++,我试图做的是从一个变量中获取存储的位,基本上就像在另一个变量中一样读取它们 假设我有一个名为temp的int,二进制值为10 1010。 我希望能够把它理解为一个布尔数组,给我[0]=1,[1]=0,[2]=1,[3]=0,等等。事实上,由于int的大小,我可能会在前面得到很多0,但meh,这只是一个例子 我尝试过创建所需类型的指针,将其分配给int的地址,但没有成功。我也看过谷歌,但似乎我不知道这种做法的名称,因为我找不到任何相关的东西 编辑:在伪代码中,我的目标如下所示 variable _

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

假设我有一个名为temp的int,二进制值为10 1010。 我希望能够把它理解为一个布尔数组,给我[0]=1,[1]=0,[2]=1,[3]=0,等等。事实上,由于int的大小,我可能会在前面得到很多0,但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,例如:


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

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

我想a已经不存在了?您的最终目标是将这些位用作另一种类型的位,如浮点或指针,还是只是读取并直接使用单个位?@Sneftel,我最终试图用它来做一个基本的遗传算法。@Volvary这并没有回答我的问题。@Sneftel主要文章中的编辑应该会告诉我们更多。s的作用是什么?因为如果我把它放进去,我会得到一个错误。s只是变量的名称。演示:有没有一种方法可以把它的一部分读作一个整数呢?你可以阅读我对原始问题的评论,看看我为什么要这样做。你的问题非常模糊和不清楚-你可能应该添加一些具体的例子,确切说明你想要实现什么。现在还不是很清楚,但看起来你可能只想做@Juster在回答中描述的那种低级的按位操作。在这种情况下,读取按位运算符。
#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();
}