網路位元組序 大端 小端

2021-06-26 09:36:20 字數 1192 閱讀 2324

1.小端法(little-endian)就是低位位元組排放在記憶體的低位址端(即該值的起始位址),

高位位元組排放在記憶體的高位址端;

2.大端法(big-endian)就是高位位元組排放在記憶體的低位址端(即該值的起始位址),

低位位元組排放在記憶體的高位址端;

網路上傳輸的資料都是位元組流,對於乙個多位元組數值,在進行網路傳輸的時候,先

傳遞哪個

位元組?也就是說,當接收端收到第乙個位元組的時候,它將這個位元組作為高位

位元組還是低位位元組

處理,是乙個比較有意義的問題;

udp/tcp/ip協議規定:把接收到的第乙個位元組當作高位位元組看待,這就要求

傳送端傳送

的第乙個位元組是高位位元組;而在傳送端傳送資料時,傳送的第乙個位元組是該數值

在記憶體中的起始

位址處對應的那個位元組,也就是說,該數值在記憶體中的起始位址處對應

的那個位元組就是要傳送的

第乙個高位位元組(即:高位位元組存放在低位址處);由此可見,多

位元組數值在傳送之前,在記憶體中應該

是以大端法存放的;

所以說,網路位元組序是大端位元組序;

比如,我們經過網路傳送整型數值0x12345678時,在80x86平台中,它是以小端發存放

的,在傳送之前需要使用系統提供的位元組序轉換函式htonl()將其轉換成大端法存放的數值。

示例程式:

#include #include int main(int argc,char** argv)

x86平台上的輸出:

local order:

[0]: 0x78 addr:4289157020 //低位位元組存放在低位址處,則是小端法;

[1]: 0x56 addr:4289157021

[2]: 0x34 addr:4289157022

[3]: 0x12 addr:4289157023 //高位位元組存放在高位址處;

htonl order:

[0]: 0x12 addr:4289157020 //由此看出,主機位元組序與網路位元組不一樣;

[1]: 0x34 addr:4289157021

[2]: 0x56 addr:4289157022

[3]: 0x78 addr:4289157023

文章**: 

大端 小端 網路位元組序

2010 10 10 17 44 58 分類 c vc c 舉報 字型大小訂閱 一 大端 小端 大端 和 小端 表示多位元組值的哪一端儲存在該值的起始位址處 小端儲存在起始位址處,即是小端位元組序 大端儲存在起始位址處,即是大端位元組序 或者說 1.小端法 little endian 就是低位位元組...

大端 小端 網路位元組序

網路位元組序 network byte order 一般是指大端 big endian,對大部分網路傳輸協議而言 傳輸,大端小端的概念是面向多位元組資料型別的儲存方式定義的,小端就是低位在前,大端就是高位在前,其中 前 是指靠近記憶體低位址,儲存在硬碟上就是先寫那個位元組 1 首先大小端是面向多位元...

大端小端 網路位元組序

0 背景 網路上的資料流是位元組流,對於乙個多位元組數值,在進行網路傳輸的時候,先傳遞哪個位元組?也就是說,當接收端收到第乙個位元組的時候,它是將這個位元組作為高位還是低位來處理呢?1 網路位元組序定義 收到的第乙個位元組被當作高位看待,這就要求傳送端傳送的第乙個位元組應當是高位。2 網路位元組序為...