linux大端小端命令,linux的大小端、网络字节序问题
linux的大小端、網絡字節序問題
總結:1、80X86使用小端法,網絡字節序使用大端法。
2、二進制的網絡編程中,傳送數據,最好以unsigned char, unsigned short, unsigned int
來處理,?unsigned short ,unsigned short 以網絡字節序處理后再拷貝到發送的buffer里
3、結構體前后要指定 #pragma? pack(1)
對于字節序(大端法、小端法)的定義《UNXI網絡編程》定義:術語“小端”和“大端”表示多字節值的哪一端(小端或大端)存儲在該值的起始地址。小端存在起始地址,即是小端字節序;大端存在起始地址,即是大端字節序。
也可以說:
1.小端法(Little-Endian)就是低位字節排放在內存的低地址端即該值的起始地址,高位字節排放在內存的高地址端。
2.大端法(Big-Endian)就是高位字節排放在內存的低地址端即該值的起始地址,低位字節排放在內存的高地址端。
舉個簡單的例子,對于整形0x12345678。它在大端法和小端法的系統內中,分別如圖1所示的方式存放。
網絡字節序
我們知道網絡上的數據流是字節流,對于一個多字節數值,在進行網絡傳輸的時候,先傳遞哪個字節?也就是說,當接收端收到第一個字節的時候,它是將這個字節作為高位還是低位來處理呢?
網絡字節序定義:收到的第一個字節被當作高位看待,這就要求發送端發送的第一個字節應當是高位。而在發送端發送數據時,發送的第一個字節是該數字在內存中起始地址對應的字節。可見多字節數值在發送前,在內存中數值應該以大端法存放。
網絡字節序說是大端字節序。
比如我們經過網絡發送0x12345678這個整形,在80X86平臺中,它是以小端法存放的,在發送前需要使用系統提供的htonl將其轉換成大端法存放,如圖2所示。
字節序測試程序
不同cpu平臺上字節序通常也不一樣,下面寫個簡單的C程序,它可以測試不同平臺上的字節序。
1
#include?
2
#include?
3
int?main()
4
{
5
int?i_num?=?0x12345678;
6
printf("[0]:0x%x\n",?*((char?*)&i_num?+?0));
7
相關文檔:
以下是個人覺得比較詳細而且易于理解的幾篇文章,所以把它一起貼出來做為筆記(一)、(二)、(三),也希望對過路者提供一點方便。
第3章文件I / O
3.1 引言
本章開始討論U N I X系統,先說明可用的文件I / O函數——打開文件、讀文件、寫文件等等。大多數U N I ......
系統環境:Linux 5.0 AS 64位
步驟:
1、下載apache-tomcat-5.5.23.tar和jdk-1_5_0_12-linux-i586.bin并存放在/usr/local文件夾下;
2、安裝jdk
[root@localhost local]#chmod 775 jdk-1_5_0_12-linux-i586.bin '非必須,要是直接運行時提示權限不夠時改變權限;
[root@localhost local]#./jd ......
linux下進行硬盤分區,進行格式化處理,并進行掛載使用
實驗環境:
HPZ400工作站 : 500G硬盤
由于本機是預裝的SUSE Linux Enterprise Desktop? 11 (x86_64)
出廠時,僅在硬盤上分了一個38G的ext3文件系統,和一個2G的swap分區,所以對于其它的空閑分區,要實現使用,就要進行格
處理。
可用的分區工具有:fdis ......
下面是在虛擬機中的linux的ftp的基本配置(redhat AS 4.0為例):
首先要安裝linux下的vsftp軟件包。
rpm -qa|gerp vsftpd????? //查找vsftpd有沒有安裝
[root@RAC01 ~]# rpm -qa|grep vsftpd
vsftpd-2.0.1-5.EL4.7
[root@RAC01 ~]#
如果沒有安裝就 vsftpd-2.0.1-5.i386.rpm
在li ......
vi是所有UNIX系統都會提供的屏幕編輯器,它提供了一個視窗設備,通過它可以編輯文件。當然,對UNIX系統略有所知的人,或多或少都覺得vi超級難用,但vi是最基本的編輯器,所以希望讀者能好好把它學起來,以后在UNIX世界里必將暢行無阻、游刃有余,因為其他幾種文本處理器并非UNIX標準配備。說不定別人的Linux機器沒安裝joe或 ......
總結
以上是生活随笔為你收集整理的linux大端小端命令,linux的大小端、网络字节序问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php7的稳定性,探索PHP7(一)--
- 下一篇: linux 运行c b停止,以下Linu