这是一个简单的c语句:
uint32_t x = 0x04000000;
Run Code Online (Sandbox Code Playgroud)
在我的小端机器上,我假设 x 等于 4。但实际上它是 67108864。
所以一定有一些非常基本的东西我不明白。您能帮忙解释一下吗?
当您对变量进行赋值时,您设置的是值,而不是表示形式。
十六进制数 0x04000000 与十进制数 67108864 相同,因此这就是被分配的值。事实上,数字以十六进制表示并不会改变分配的工作方式。
如果你做了这样的事情:
unsigned char n[4] = "\x4\x0\x0\x0";
memcpy(&x, n, sizeof(x));
Run Code Online (Sandbox Code Playgroud)
那么x在小端机器上将包含值 4。