《C語言筆記:大小端模式》
阿新 • • 發佈:2021-02-08
一,計算機儲存系統的大小端
1,大端模式:高地址存放高位元組資料,低地址存放低位元組資料。
2,小端模式:高地址存放低位元組資料,低地址存放高位元組資料。
3,圖示:32位系統
4,兩種判斷計算機大小端模式的辦法
#include<stdio.h> union myunion { int a; char b; }; int main(void) { union myunion un; //unsigned int c = 1; unsigned int c = 0x12345678; char *p = (char *)&c; //方式一:通過聯合體的元素共用記憶體的特質來判別大小端模式 un.a = 1; if(un.b) { printf(" 小端模式 \n"); } else { printf(" 大端模式 \n"); } //方式二:通過指標的方式判斷 printf(" *p = 0x%x \n",*p); if(*p) { printf(" 小端模式 \n"); } else { printf(" 大端模式 \n"); } }
二,通訊系統的大小端問題
1,比如說要通過一個串列埠傳送一個0x12345678給接收方,但是由於串列埠限制,只能以位元組為單位傳送,那麼久需要傳送四次,接收方分四次接收,內容分別是0x12、0x34、 0x56、 0x78。接收方收到這四個位元組後需要去重組得到0x12345678而不是得到0x78563412。
2,所以通訊雙方需要有一個默契,那就是相互通訊之前就規定好,是先發/接收高位還是先發低位/接收。這便是通訊中的大小端問題。
3,一般來說,先發高位元組的叫做大端模式,先發低位元組的叫做小端模式。但也不一定,可以通訊雙方相互約定。