socket程式設計之網路位元組序與主機位元組序

2022-09-11 09:00:10 字數 614 閱讀 1023

0、為什麼會有大小端模式之分呢?

這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為 8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型,另外,對於位數大於 8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。

1、一般 x86 都是小端 模式 ,x64有大小端

2、所謂小端 即 低位址存放高位  ,高位址存放低位

0x11 22 33 44  ----》 0x 11   22   33  44

3、所謂大端  即  高位址 存放高位 ,低位址存放低位,一般網路序為大端儲存模式

0x11 22 33 44 ---》 0x 44 33 22 11

4.相關函式

htons 把unsigned short型別從主機序轉換到網路序

htonl 把unsigned long型別從主機序轉換到網路序

ntohs 把unsigned short型別從網路序轉換到主機序

ntohl 把unsigned long型別從網路序轉換到主機序

網路程式設計之位元組序

關於位元組序的問題,查了一些資料 1.大小端 2.網路位元組序 3.大小端與網路位元組序 4.socket與位元組序 上述資料裡有相關概念和知識點的說明,以下會對部分問題做幾點總結。這裡以主機位元組序作說明,計算機在儲存多位元組資料時,例如c語言中的整型資料 int 無法用乙個位元組單元的記憶體將資...

TCP IP網路程式設計之位元組序和網路位元組序

一 概要 二 簡介 在此之前我們需要了解清楚幾個概念。cpu架構 人們常說的x86 x64是一種架構,但是他有32位的和64位的。32位的叫x86 後來出現基於它的64位版,就叫x64。作業系統位數 64位的系統是基於64位處理器而來的,所以64位的系統能在64位的處理器上執行,但是不能在32的處理...

socket程式設計 位元組序

接觸到socket程式設計,就一定會接觸位元組序轉換。對於字串來說,是沒有位元組序的差別的,就像我們寫字,記憶體就像是紙,字串就從左向右依次寫 記憶體資料 a b c d 而任何cpu讀取的時候,也都是從左向右依次讀取。對於多位元組資料 比如short int long.不同位元組序是有差別的。所有...