大小端模式(BIG-ENDIAN、Little-ENDIAN)
来源:互联网 发布:linux badzip 编辑:程序博客网 时间:2024/05/16 05:41
在做网络编程时、经常会用到htons() ntohl()这种函数。
大端模式
所谓的大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
即:一个字(word,两个字节)的高位字节存放数字的低位、低位字节存放数字的高位
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在大端模式下,前16位应该这样读: e684
小端模式
所谓的小端模式,是指数据的高位保存在内存的高地址中,而数 据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在小端模式下,前16位应该这样读: 84e6
char x0,x1;
x=0x1122;
x0=((char*)&x)[0]; //低地址单元
x1=((char*)&x)[1]; //高地址单元
若x0=0x11,则是大端; 若x0=0x22,则是小端......
上面的程序还可以看出,数据寻址时,用的是低位字节的地址。
htons():主机字节序转化为网络字节序(网络字节序是机器无关的、大端模式)
ntohl():网络字节序转化为主机字节序。
在网络编程时、这两个函数实际上就是隐藏大端/小段这样的概念,统一处理,在发送时转化为网络字节序,接收到之后
转化为主机字节序以便本机识别。
大端模式
所谓的大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
即:一个字(word,两个字节)的高位字节存放数字的低位、低位字节存放数字的高位
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在大端模式下,前16位应该这样读: e684
小端模式
所谓的小端模式,是指数据的高位保存在内存的高地址中,而数 据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
例子:
0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000
0000440: b484 6c4e 004e ed00 0000 0000 0100 0000
在小端模式下,前16位应该这样读: 84e6
char x0,x1;
x=0x1122;
x0=((char*)&x)[0]; //低地址单元
x1=((char*)&x)[1]; //高地址单元
若x0=0x11,则是大端; 若x0=0x22,则是小端......
上面的程序还可以看出,数据寻址时,用的是低位字节的地址。
htons():主机字节序转化为网络字节序(网络字节序是机器无关的、大端模式)
ntohl():网络字节序转化为主机字节序。
在网络编程时、这两个函数实际上就是隐藏大端/小段这样的概念,统一处理,在发送时转化为网络字节序,接收到之后
转化为主机字节序以便本机识别。
0 0
- 大小端模式(BIG-ENDIAN、Little-ENDIAN)
- 大小端模式(关于Big-Endian 和Little-Endian)
- cpu的大小端模式【big endian/little endian】
- 大小端模式little endian and big endian
- (转)大小端(Big endian,little endian)
- 大小端 Big-Endian 与 Little-Endian
- 大小端 Big-Endian 与 Little-Endian
- Little-endian big endian 端模式
- 大小端(little-endian big-endian)问题小结
- 大小端(little-endian big-endian)问题小结
- [C#]大小端字节序(Big Endian和Little Endian)
- 大小端(Little-Big endian)问题
- 大小端(big/little endian)
- 大端模式(big endian)和小端模式(little endian)
- little-endian模式和big-endian模式
- Little endian & Big endian
- big-Endian&little-Endian
- big-Endian&little-Endian
- 模拟赛 合唱队形(源于POJ 2891)
- 线程编程五:如何共享对象
- SQL优化之count,表的连接顺序、条件顺序,in和exist
- 单例的几种方法
- Cocos2d-x 3.0多线程异步资源加载
- 大小端模式(BIG-ENDIAN、Little-ENDIAN)
- android.os.Environment.getExternalStorageState
- jsp自定义标签系列之---<function>用法实力
- C++运算符优先级
- 阿根廷点杀荷兰,24年后再进决赛
- 深入探索Java-ArrayList
- java 获取路径
- 第0讲: 准备篇
- c# tcpclient