大端小端模式以及相互转化
文章目录
- 概念
- 转化方法
- 应用
概念
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。(Big-Endian)
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址。(Little-Endian)
unsigned int value = 0x12345678为例
我们可以用unsigned char buf[4]来表示value
Big-Endian: 低地址存放高位,如下:
高地址---------------buf[3] (0x78) -- 低位buf[2] (0x56)buf[1] (0x34)buf[0] (0x12) -- 高位---------------低地址
Little-Endian: 低地址存放低位,如下:
高地址---------------buf[3] (0x12) -- 高位buf[2] (0x34)buf[1] (0x56)buf[0] (0x78) -- 低位--------------
低地址
摘自百度百科
这里数据以16进制保存,内存地址1个字节=8位,0000 0000,4个0表示的范围为16,则一个字节保存的数字为2位16进制,即以0x12划分,而不是0x123
1个内存单元的长度是8bits,以8位二进制作为一个存储单元,也就是一个字节。
对于32位系统,一次读取的内存单元为4个字节的偶数倍
所以转换方法也可以自己写,对于每1个字节来操作即可
转化方法
#define ntohs(x) __DARWIN_OSSwapInt16(x) //16位数据类型网络字节顺序到主机字节顺序的转换
#define htons(x) __DARWIN_OSSwapInt16(x) //16位数据类型主机字节顺序到网络字节顺序的转换#define ntohl(x) __DARWIN_OSSwapInt32(x) //32位数据类型网络字节顺序到主机字节顺序的转换
#define htonl(x) __DARWIN_OSSwapInt32(x) //32位数据类型主机字节顺序到网络字节顺序的转换
记忆方法:ntohl 以中间的to隔开,则为n->hl 意为 net to host unsigned long ,32位数据类型网络字节顺序到主机字节顺序的转换。
应用
- 互联网使用的网络字节顺序采用大端模式进行编址,而主机字节顺序根据处理器的不同而不同,如PowerPC处理器使用大端模式,而Pentuim处理器使用小端模式。
- 在处理音视频数据时,网络传输以大端为主,而主机有可能是大端或者小端。
- 例如收到数据为0x3456,由于网络传输以大端,如果机器此时使用小端存储,现要将该数据发出,如果不进行数据转换直接发送,此时发送的数据为0x56,0x34。会将该数据解释为0x5634而非原数据0x3456,此时就会发生灾难性的错误。所以,在此之前,需要将小端数据转换成大端的,即进行高字节和低字节的交换
大端小端模式以及相互转化相关推荐
- 大端小端模式判断以及数据转换
简介 在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit.但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体 ...
- 大端小端模式(俗称大尾小尾模式)
转自百度百科 http://baike.baidu.com/link?url=uKVPtSaiXzEAXJSHfiya1Wj_oITw-t8MpHkJxJvMb0Eu_WXo28czAHLY-FOqj ...
- 大端小端模式及其判别方式
Little endian 和Big endian 是CPU 存放数据的两种不同顺序. 对于整型.长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据 ...
- 计算机是小端模式,计算机内的大小端模式
一.什么是大端与小端模式? 大端模式英文叫Big-Edian,小端模式英文叫little-Endian. 简单说: 大端模式:低字节存放在内存的低地址,高字节存放在内存的高地址(跟我们的一般思维相一致 ...
- 计算机中的大端模式与小端模式
1.小端模式 小端模式:数据的高字节保存在内存的高地址中:数据的低字节保存在内存的低地址中.默认使用小端模式 2.大端模式 大端模式:数据的高字节保存在内存的低地址中:数据的低字节保存在内存的高地址中 ...
- 【转】大端模式与小端模式、网络字节顺序与主机字节顺序 (经典)
大端模式与小端模式 一.概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式. 先回顾两个关键词,MSB和LSB: ...
- 小端模式和大端模式_计算机字节顺序(大端法和小端法)详解
首先理清一下基本的概念: 1. 大多数机器使用时的8位的块(一个字节),作为可寻址的最小单位, 2. 机器级程序将内存视为非常大的字节数组(虚拟内存),内存的每个字节都由一个唯一的数字来表示(如下X的 ...
- 测试系统存储是大端模式还是小端模式的方法
请写一个C 函数,若处理器是Big_endian 的,则返回0:若是Little_endian 的,则返回1. 先分析一下,按照上面关于大小端模式的定义,假设int 类型变量i 被初始化为1. 以大端 ...
- 借助联合体union的特性实现检测当前计算机环境采用的是大端模式还是小端模式
方式一: 借助联合体union的特性实现(联合体类型数据所占的内存空间等于其最大的成员所占的空间,对联合体内部所有成员的存取都是相对于该联合体基地址的偏移量为 0 处开始,也就都是从该联合体所占内存的 ...
最新文章
- matlab绘图 subplot函数使用方法
- sql 减法_SQL学习笔记整理(持更)
- JS面向对象--你真的理解闭包了吗?
- Microsoft Sync Framework 系列(三):微软同步框架出现背景及要解决的问题
- ASP.NETmvc常用JQUERY收藏【jquery.form.js结合jquery.validate.js】
- 过程计算机控制综合课程设计,自动化10本 12升《计算机控制综合课程设计》任务书...
- 28.课时28.【Django模块】with标签使用详解(Av61533158,P28)
- 规划System Center 2012 R2 Operations manager
- Junit框架使用(4)--JUnit常用断言及注解
- 软件开发人员,自身素质应该注意的问题!
- 好用的MARKDOWN编辑器一览
- 惠普暗影精灵2更新bios系统,防止电池鼓包
- C语言作业练习1:输入一个数判断是否为素数
- Linux网络——DNS域名解析服务
- Vue 设置图片不转为base64
- FRP + 腾讯云 内网穿透
- 电脑卡修复计算机有用吗,电脑卡重装系统有用吗|电脑太卡可以重装系统解决吗...
- JQ input value取值再赋值
- 2021全球游戏市场规模及消费者主要分布情况:预计2024年全球游戏市场规模达到2187亿美元[图]
- java如何利用rotate旋转图片_JAVA对图片的任意角度旋转,以及镜像操作
热门文章
- JVM学习 -- JVM 性能调优监控工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解
- SAP JCo 功能
- 数学之美:e^x 是如何得到的
- 搭建本地 Protractor 运行环境
- Android性能优化系列:VSync、Choreographer 和 Render Thread
- Linux基础命令之tar解压缩详解
- 《互联网程序设计》课程:第1讲 JAVA图形窗口程序设计 (完整代码实现)
- 系统调用是什么,你用过哪些系统调用
- roads 用户体验标准_在你眼中的RoadMap,其实并没有那么难搞定
- 用python画星空图教程水粉_水粉画教程:水粉画星空教程图解