1. 程式人生 > >C語言之大小端問題

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("小端"); }
}