我正在尝试将8个字节存储在字节数组中,以存储指针的值。
int main() {
unsigned long a = 0;
char buf[8];
int i = 0;
int *p = &i;
a = (unsigned long)p;
while (i < 8)
{
buf[i] = (a >> (8 * i)) & 0xFF;
i++;
}
a = 0;
i = 0;
while (i < 8)
{
a = ?
i++;
}
p = (int *)a;
}
第一个循环将p按照 usigned long 类型转换为 a 中的连续字节存储,但我不知道如何在第二个循环中检索该值。有人知道吗?
>>
的相反操作是<<
。而&
的相反操作是|
。 - alkuintptr_t
而不是unsigned long
,并且定义并使用size_t ptrsize = sizeof(p)
,而不是魔法数字8
。 - alka |= buf[i]
和a <<= 8
,就像我之前尝试的一样,会得到不同的结果:先前是a = 140724635125076
,后来是a = 18446744062955356160
。 - qleguenneclong
类型是 8 字节宽度吗? - alk