当我阅读有关大端/小端的文章时,我很困惑。
代码如下:
#include <iostream>
using namespace std;
int i = 12345678;
int main()
{
char *p = (char*)&i; //line-1
if(*p == 78) //line-2
cout << "little endian" << endl;
if(*p == 12)
cout << "big endian" << endl;
}
问题:
static_cast<char*>(&i)
进行转换吗? 78
存储在最低字节中,否则12
存储在最低字节中。但是我认为,i = 12345678;
将以二进制形式存储在内存中。如果是little-endian,那么
i
二进制文件的最后一个字节将存储在最低字节中,但是我不明白是如何保证i
的最后一个字节为78
?就像,如果是
i = 123;
,那么i
的二进制文件是01111011
,是否可以保证在小尾数法中,23
存储在最低字节中? 最佳答案
reinterpret_cast
。 i
的值为0x12345678
,那么您可以检查0x78
和0x12
以确定字节序,因为两个十六进制数字对应一个字节(在我为之编程的所有硬件上)。