我在这里做错了什么?
#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/