大小端再測

以前就對這寫概念理解的不夠透徹, 每次都是死記硬背大小端的概念, 現在其實也記得不是很清晰。

現在終於是心理稍微有點普了, 0x1234, 低位是0x34, 高位是0x12.
short是兩個字節。
char 是一個字節。

存到低位的值是低位, 0x12高位, 則主機爲大端序
存到低位的值是低位, 0x34低位, 則主機爲小端序

#include<stdio.h>

int main()
{
    unsigned short x = 0x1234;
    char *p = (char *)&x;

    // *p = 0x12, *(p+1) = 0x34 則爲大端序, 【高地址在低位】
    fprintf(stdout, "*p = 0x%x, *(p+1) = 0x%x\n", *p&0xff, *(p+1)&0xff);
    if (*p == 0x12)
    {
        printf("Big Endian\n");
    }
    else if (*p == 0x34)
    {
        printf("Little Endian\n");
    }

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章