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