C語言之大小端問題

大小端問題

在我們發送數據的時候,我們首先要確定的是大端還是小端模式來進行的,接收方接收數據時必須知道數據傳輸的是大端機還是小端機,這個才能正確地讀取和存儲數據,否則就會出現問題。
一個三十二位的二進制程序中存儲有兩種方式, 1:數據的低位保存在內存的高地址中,數據的高位保存在內存的低地址中(大端模式) 2:數據的低位保存在內存的低地址中,數據的高位保存在內存的高地址中(小端模式)

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<stdio.h>
int main()
{
    int a = 0x12345678;
     printf("%p\n", &a);
     printf("%p\n", (char *)&a);
    for (int i = 0; i < 4; i++)
     {
         printf("%#x--->%p\n", *((char*)&a + i), (char*)&a + i);
     }
     system("pause");
    return 0;
}

區分大小端的方法 1:利用地址強制類型轉換

void test()
{
int i = 1;
char j = *((char*)&i);
if(j == 1)
{ printf("小端\n"); }
}

2:利用聯合體性質:不同類型變量共享同一塊內存

void test2()
{
union un
{
int i;
char c;
}u;
u.i = 1;
if(u.c ==1)
{ printf("小端"); }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章