c - 如何从存储在字节数组中的字节中检索值?

标签 c arrays pointers bit-manipulation bit

我正在尝试将 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 的连续字节,在 a 中转换为 usigned long,但我不知道如何在第二个循环中检索值。有人知道吗?

最佳答案

这是你的反码:

a = 0;
while (i < 8)
{
    a |= ((unsigned long)buf[i] & 0xff ) << (8 * i);
    i++;
}

关于c - 如何从存储在字节数组中的字节中检索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34479590/

相关文章:

objective-c - 为什么对象变量必须是指针?

c++ - 使用 libtool 和 autoconf 构建 ASM 代码

c++ - 指针和抽象类

JavaScript,无字符串

c - 段错误 : 11 when returning stuct via function pointer in struct

c - 添加对指针的操作

python - 在 Python 中解析 C 函数

c - 为什么我的函数在有范围时返回如此大的随机值?

c# - 如何在C#中将Json对象转换为数组

c - 在 C 中对 double 数组进行排序