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或 ......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值