位元組序,位址轉換

2021-08-07 05:54:07 字數 2431 閱讀 5389

位元組序,位址轉換

位元組序:

是指多位元組資料在計算機記憶體中儲存或者網路傳輸時各位元組的儲存順

序。兩種格式:大端和小端。

小端:高位址存放高位數,低位址存放低位數

大端:高位址存放低位數,低位址存放高位數

驗證主機的位元組序

#include

int main()

輸出結果為

12時 為大端

輸出結果為

34時 為小端

算術運算與記憶體操作運算:算術運算是不改變被運算資料的位元組序

ip位址的位元組序:ip

位址的整數值,自

ip位址生成的時刻起,就一定是網路位元組序的(大端

)位元組序轉換函式:os

一般都提供

htons

、htonl

、ntohs

、ntohl

這四個位元組序操作函式

#include

主機位元組序轉換成網路位元組序函式:

u_longhtonl(u_long hostlongvalue); 32

u_shorthtons(u_short hostshortvalue); 16

網路位元組序轉換成主機位元組序函式:

u_longntohl(u_long netlongvalue); 32

u_shorthotns(u_short netshortvalue); 16

位址轉換函式

#include

將點分十進位制數串轉換成

32位無符號整數

intinet_pton(int family, const char *strptr, void *addrptr);

family

:協議族

(af_inet

、af_inet6

、pf_packet等)

,常用af_inet

strptr

:點分十進位制數串

addrptr:32

位無符號整數的位址

成功返回

1,失敗返回其他將32

位無符號整數轉換成點分十進位制數串

constchar *inet_ntop( int family, const void *addrptr,   char*strptr, size_t len );

f

amily

:協議族

(af_inet

af_inet6

pf_packet

)

,常用af_inet

addrptr:32

位無符號整數

strptr

:點分十進位制數串

len

:strptr

快取區長度

len

的巨集定義

#defineinet_addrstrlen   16  // for ipv4

#defineinet6_addrstrlen  46  // for ipv6

成功返回首位址,否則為

null

linux位元組序轉換函式和位址轉換函式

剛才閱讀 的時候看到了乙個位元組排序函式,一時想不起具體用法了。想想學習linux下的網路程式設計也不少時間了,這些位元組排序和轉換的函式還是不太清楚,容易混淆。今天索性把這方面的知識彙總一下,爭取以後能夠熟練的認識和運用。位元組順序函式 小端位元組序 將低序位元組儲存在起始位址。linux 大端位...

python 網路位元組序轉換 網路位元組序

一.位元組序 位元組序是由於不同的主處理器和作業系統,對大於乙個位元組的變數在記憶體中的存放順序不同而產生的。位元組序通常有大端位元組序列和小端位元組序兩種分類方法。由於主機的千差萬別,主機的位元組序不能做到統一,但是網路上傳輸的數值,它們有統一的規定。網路位元組序 是指多位元組變數在網路傳輸時的表...

主機位元組序和網路位元組序轉換

為什麼要轉換?主機位元組序 整數在記憶體中儲存的順序,不同的處理器對應不容的模式 little endian 將低序位元組儲存在起始位址 big endian 將高序位元組儲存在起始位址 網路位元組序 整數在網路中的傳送順序 網路位元組順序是tcp ip中規定好的一種資料表示格式,它與具體的cpu型...