大端小端模式

來源:互聯網
上載者:User

1.簡介

記憶體中儲存資料有兩種方法:小端模式和大端模式。這取決於CPU,x86的CPU一般為小端模式。

little-endian:將低序位元組儲存在起始地址;(只需記住小端,就可推出大端。兩個都記反而容易混淆)

big-edian:將高序位元組儲存在起始地址;

術語“大端”和“小端”表示將多位元組值的哪一端儲存在起始地址。

比如要儲存一個兩位元組的短整數。

short a=0x0102;

小端模式

在記憶體中是這樣的:

0x02
0x01

------------------------>記憶體位址增大方向。

VS:

大端模式是這樣的;

0x01
0x02

------------------------->記憶體位址增大方向。

2.檢測當前主機位元組序程式:

#include <stdio.h> int main(){union{short s;char c[sizeof(short)];}un;un.s = 0x0102;if(sizeof(short) == 2){if(un.c[0] == 0x01 && un.c[1] == 0x02){printf("big-edian\n");}else if(un.c[0] == 0x02 && un.c[1] == 0x01){printf("little-edian\n");}else{printf("unknow\n");}}else{printf("sizeof(short) != 2,try other means!");}return 0;}

3.位元組序轉換

     不同的系統可能用不同的模式,這樣通過網路在不同的系統間傳輸多位元組資料時就會出現資料解讀錯誤。幸好規定了網路位元組序(大端模式)。在網路上傳輸資料時,我們可以把資料從本地位元組序轉換到網路位元組序然後再發到網路上。從網路上接收到資料後轉化為本地位元組序。這樣我們就可以避免這些位元組序細節問題了。當然傳輸單位元組的字串時,不許用轉換位元組序。

windows和Linux平台都提供了轉換函式。在Linux下:

          

            #include <netinet/in.h>            uint16_t htons(uint16_t host16bitvalue);            uint32_t htonl(uint32_t host32bitvalue);                                                                                     /*返回網路位元組序的值*/             uint16_t ntohs(uint16_t net16bitvalue);             uint32_t ntohl(uint32_t net32bitvalue);                                                                                     /*返回主機位元組序的值*/  

16:表示是16bit的值;32:表示是32bit的值;

s:短整數,即16bit; l:長整數,即32bit;

h:本地主機位元組; n:網路位元組;

4.大端模式和小端模式各自的優勢:

小端模式 :強制轉換資料不需要調整位元組內容,1、2、4位元組的儲存方式一樣。
大端模式 :符號位的判定固定為第一個位元組,容易判斷正負。

好像對大端小端模式的考察每年都是筆試題的熱點。

參考連結:詳解大端模式和小端模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.