C語言之大小端問題
阿新 • • 發佈:2019-01-23
大小端問題
在我們傳送資料的時候,我們首先要確定的是大端還是小端模式來進行的,接收方接收資料時必須知道資料傳輸的是大端機還是小端機,這個才能正確地讀取和儲存資料,否則就會出現問題。
一個三十二位的二進位制程式中儲存有兩種方式, 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("小端"); }
}