機器字節序測試

2021-07-09 18:23:59 字數 849 閱讀 6259

位元組序:

位元組序,英文單詞為endian,該單詞**於喬納森·斯威夫特的**《格列佛遊記》。**中小人國因為吃雞蛋的問題而引發內戰,戰爭的具體原因是:我們大家都認為,吃雞蛋前,原始的方法是打破雞蛋較大的一端。可是當今皇帝的祖父小時候吃雞蛋,一次按古法打雞蛋時碰巧將乙個手指弄破了,因此他的父親,當時的皇帝,就下了一道敕令,命令全體臣民吃雞蛋時打破雞蛋較小的一端,違令者重罰。老百姓們對這項命令極為反感。歷史告訴我們,由此曾發生過六次叛亂,其中乙個皇帝送了命,另乙個丟了王位…關於這一爭端,曾出版過幾百本大部著作,不過大端派的書一直是受禁的,法律也規定該派的任何人不得做官。2023年,danny cohen在其著名的**"on holy wars and a plea for peace"中,為平息一場關於位元組該以什麼樣的順序傳送的爭論,而引用了該詞。而本文所說的計算機領域中的位元組序是指存放多位元組資料的位元組(byte)的順序,根據存放的順序的不同可以分為大端位元組序和小端位元組序。

大端位元組序(`big endian`):

例如:`unsigned int a = 0x12345678`在記憶體中,隨著記憶體位址的遞增,數值存放順序依次為`12 34 56 78`。

小端位元組序(`little endian`):

定義:低位元組存於記憶體低位址;高位元組存於記憶體高位址。

例如:`unsigned int a = 0x12345678`在記憶體中,隨著記憶體位址的遞增,數值存放順序依次為`78 56 34 12`。

測試本機位元組序的**:

#include int main()

C語言 機器字節序 大小端的判斷與修改

一 機器字節序 1 int a 1 低位址 高位址 0x100 0x101 0x102 0x103 對於 int 型的整數1,對應的二進位制數為 0000 0000 0000 0000 0000 0000 0000 0001 高位元組 低位元組 2 我們定義乙個整形變數a,假設其初始位址為0x100...

大端位元組序 小端位元組序(網路位元組序 主機位元組序)

大端位元組序 整數的高位位元組儲存在記憶體的低位址處,低位元組儲存在記憶體的高位址處。一般pc大多採用小端位元組序,也稱為主機位元組序。網路上傳輸採用大端位元組序,也稱為網路位元組序。linux中常用轉換函式如下 include uint32 t htonl uint32 t hostlong 無符...

位元組序和網路位元組序

1 位元組序 由於不同的計算機系統採用不同的位元組序儲存資料,同樣乙個4位元組的32位整數,在記憶體中儲存的方式就不同.位元組序分為小尾位元組序 little endian 和大尾位元組序 big endian intel處理器大多數使用小尾位元組序,motorola處理器大多數使用大尾 big e...