我在这里做错了什么?

#include <stdio.h>

int main() {
    unsigned char buff[3];

    buff[0] = 0x00;
    buff[1] = 0x11;
    buff[2] = 0x00;
    buff[3] = 0x00;

    int var = (buff[0]<<24)|buff[1]|buff[2]|buff[3];
    printf ("%u\n", var);

    return 0;
}


结果如下所示

$./a.out
17

最佳答案

char[3]是3个字符的数组,具有合法索引0、1和2。

您所指的buff[3]必须完全不同,甚至可能在buff[3] = 0x00分配后重新初始化。您可能会得到SIGSEGV或GPF而不是17。

关于c - 十六进制数组到int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9011057/

10-12 16:18