【C# IO 操作 】Big-endian 和 Little-endian 详解
首先,认识字节(Byte),计算机中Byte意思为“字节”,8个二进制位构成1个"字节(Byte)",即1Byte=8bit,字节是计算机处理数据的基本单位。所谓的大字端(Big Endian)和小字端(Little Endian)就是在存储数据时遵循不同的字节排列顺序,即字节序(Byte Order)不同。
1.含义
Big Endian:按照从低地址到高地址的顺序存放数据的高位字节到低位字节,就是高位数字存储在前面,例如:整数(int)573785173用十六进制表示就是0x22334455,其中“0x”是十六进制的标识符。这个数字有四个字节构成,字节值分别为0x22、0x33、0x44和0x55。在二进制文件中如果是按照大字端(Big Endian)的形式存储,那么在文件中的顺序是这样:0x22、0x33、0x44、0x55,符合人类的正常思维。
其中: 0x22被称为最高有效字节(most significant byte, MSB);
0x55被称为最低有效字节(last significant byte, LSB)。
Little Endian: 按照从低地址到高地址的顺序存放数据的低位字节到高位字节,就是低位数字在前面。同样以上面的数字为例。0x22334455如果按照小字端(Little Endian)的形式存储,那么它的字节值存储顺序为0x55、0x44、0x33、0x22。
2. 二者的对比
整数573785173的16进制表示: 0x22334455
假设存储地址: 0x0155a800 0x0155a801 0x0155a802 0x0155a803
Big Endian法: 0x22 0x33 0x44 0x55
Little Endian: 0x55 0x44 0x33 0x22
3.为什么要有大字端和小字端的区别?
这其实与计算机的环境或CPU有关,对于大部分的CPU来说,字节都是按照Little形式存储的,但是在一些情况下可能是按照Big形式存储的,如在网络上传输数字时。
4、常见字节序
一般操作系统是小端,通讯协议时大端。
CPU字节序。。。
文件字节序。。。
JAVA和网络通信协议使用 Big-Endian编码
【C# IO 操作 】Big-endian 和 Little-endian 详解的更多相关文章
- IO模型之AIO代码及其实践详解
一.AIO简介 AIO是java中IO模型的一种,作为NIO的改进和增强随JDK1.7版本更新被集成在JDK的nio包中,因此AIO也被称作是NIO2.0.区别于传统的BIO(Blocking IO, ...
- java io系列16之 PrintStream(打印输出流)详解
本章介绍PrintStream以及 它与DataOutputStream的区别.我们先对PrintStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:htt ...
- Java:IO流之字节流InputStream、OutputStream详解
字节流: (抽象基类)InputStream类(读): (抽象基类)OutputStream类(写): InputStream: 构造方法摘要 InputStream() ...
- 【Java IO流】字节流和字符流详解
字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作——也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3 ...
- Java String 函数常用操作 & format() 格式化输出,代码详解
package _String_; import java.util.*; import java.math.*; import java.lang.*; public class _Strings ...
- IO模型之NIO代码及其实践详解
一.简介 NIO我们一般认为是New I/O(也是官方的叫法),因为它是相对于老的I/O类库新增的( JDK 1.4中的java.nio.*包中引入新的Java I/O库).但现在都称之为Non-bl ...
- Kafka高性能揭秘:sequence IO、PageCache、SendFile的应用详解
大家都知道Kafka是将数据存储于磁盘的,而磁盘读写性能往往很差,但Kafka官方测试其数据读写速率能达到600M/s,那么为什么Kafka性能会这么高呢? 首先producer往broker发送消息 ...
- Python教程:操作数据库,MySql的安装详解
各位志同道合的同仁请点击上方关注 本教程是基于Python语言的深入学习.本次主要介绍MySql数据库软件的安装.不限制语言语法,对MySql数据库安装有疑惑的各位同仁都可以查看一下. 如想查看学习P ...
- 浅谈Notepad++选中行操作+快捷键+使用技巧【超详解】
Notepad++选中行操作 快捷键 使用技巧 用Notepad++写代码,要是有一些重复的代码想copy一下,还真不容易,又得动用鼠标,巨烦人.... 有木有简单的方法呢,确实还是有的不过也不算太好 ...
- Hadoop(十一)Hadoop IO之序列化与比较功能实现详解
前言 上一篇给大家介绍了Hadoop是怎么样保证数据的完整性的,并且使用Java程序来验证了会产生.crc的校验文件.这一篇给大家分享的是Hadoop的序列化! 一.序列化和反序列化概述 1.1.序列 ...
随机推荐
- cesium结合geoserver利用WFS服务实现图层编辑(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- 无缓冲文件IO和目录操作
引言 在后台开发中,对于文件I/O我们通常不使用C语言封装的fopen.fread.fwrite标准I/O,而是直接使用Linux提供的系统调用函数.因为这些系统调用没有使用用户缓冲区,我们直接与内核 ...
- 为什么 Redis 的查询很快, Redis 如何保证查询的高效
Redis 如何保证高效的查询效率 为什么 Redis 比较快 Redis 中的数据结构 1.简单动态字符串 SDS 对比 c 字符串的优势 SDS可以常数级别获取字符串的长度 杜绝缓冲区溢出 减少修 ...
- mybatis 接口中定义方法、映射文件、实体类之间的关系?
一.定义实体类 ,注意需求 是一对多还是多对一. 这里用员工和部门 多对一的关系举例. package com.zs.entity; /* * /* * 多对一? * 多个员工 对应一个部门 一个 ...
- MySQL 行锁、表锁
1. 多个事务操作同一行数据时,后来的事务处于阻塞等待状态.这样可以避免了脏读等数据一致性的问题.后来的事务可以操作其他行数据,解决了表锁高并发性能低的问题 2.InnoDB的行锁是针对索引加的锁,不 ...
- .exe文件自动重启
echo :杀死进程taskkill /f /im YYTWEB.exe :等待10秒:ping 127.0.0.1 -n 10 start "" "D:\都江堰银 ...
- 隐藏键盘的N种方法
---Created by luo.h 显示键盘 [textField becomeFirstResponder]; 隐藏键盘 @interface ViewController ()<UITe ...
- 出现Table ‘./mysql/proc’ is marked as crashed and should be repaired
一般这种表崩溃的问题出现在mysql异常停止,或者使用kill -9命令强行杀掉进程导致,进入MySQL命令行后,执行下面的命令即可修复'./mysql/proc'表 repair table mys ...
- 手动加载nacos自定义配置到全局变量中
由于springboot启动顺序:先加载上下文再加载bean 开始日常搬砖: 1.通过启动日志发现nacos在PropertySourceBootstrapConfiguration中加载上下文配置: ...
- 《PHP面试笔试真题库》——PHP面试的好帮手
你好,是我琉忆. 一个文艺的PHP开发工程师. 很荣幸能够在这里带来我的第一本新书--<PHP程序员面试笔试真题库>. 一.创作过程 <PHP 程序员面试笔试真题库>是我的第三 ...