`
vaqeteart
  • 浏览: 305694 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

BigEndian和LittleEndian

 
阅读更多
BigEndian和LittleEndian
首先了解一些概念:
MSB(Most Significant Bit):高字节。
对于一个多字节的数据,高字节也就是它的高位(最低位应该是“个位”)。

LSB(Least Significant Bits)
对于一个多字节的数据,低字节也就是它的低位(最低位应该是“个位”)。
这里"B"是大写的表示字节,小写"b"表示位。

高地址和低地址:
对于内存的地址,从0x000000开始增加,也就是从低地址向高地址增加的过程。

BigEndian:指低地址存放最高有效字节(MSB)。又叫降序。
这里,是“正”序的体现符合我们的思维习惯。例如,我们写一个数字0x1234,从左向右写(高位->低位),那么在内存上也从小向大来存放(低->高),所以内存中看到的就依次是12 34.

LittleEndian:是低地址存放最低有效字节(LSB)。又叫开序。
这里,是“反”序的体现和我们的思维习惯相反。例如,我们写一个数字0x1234,从左向右写(高位->低位),那么在内存上却从大向小来存放(高->低),所以内存中看到的就依次是34 12.
C/C 语言编写的程序里数据存储顺序是跟编译平台所在的CPU相关的,而JAVA编写的程序则唯一采用big endian方式来存储数据.
所有网络协议也都是采用big endian的方式来传输数据的。所以有时我们也会把big endian方式称之为网络字节序。当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。ANSI C中提供了四个转换字节序的宏。

自己总结了两种记忆方式:除了前面说的那种,还有一个:
Endian就是“端”,内存的端确定的就是最开始的0地址(最低地址),所以BigEndian就是大的存在低地址。大的,当然就是最高位。LittleEndian类似.

一个简单的例子:
//判断是little endian还是big endian
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 0x11223344;
if((char)a == 0x11)
{//低地址存高字节
printf("big endian!\n");
}  
printf("%x\n",(int)(char)a);

short b = 0x1122;
if((char)b == 0x22)
{//低地址存低字节
printf("little endian!\n");
}  
//强转之后的地址,一定是从低开始算。
printf("%x\n",(int)(char)b);
printf("hello\n");
}
分享到:
评论

相关推荐

    查看字符串在不同编码.zip

    Unicode有两种字节顺序表示方式,即BigEndian和LittleEndian,分别称为UTF-16BE和UTF-16LE。 在实际开发中,理解和掌握这些编码方式至关重要,因为不正确的编码处理可能导致乱码问题。例如,当读取一个UTF-8编码的...

    netty-netty-4.1.66.Final.tar.gz

    12. **ByteOrder**:Netty支持BigEndian和LittleEndian两种字节序,方便跨平台通信。 综上所述,Netty 4.1.66.Final版本是一个功能强大的网络编程框架,它简化了网络应用的开发,并提供了高效的性能和稳定性。无论...

    VMIC GE公司PMC-5565板卡白皮书

    在数据传输方面,文档强调了BigEndian和LittleEndian数据格式转换的考虑因素。在计算机系统中,不同的硬件平台可能使用不同的字节顺序来存储数据,因此在数据传输时需要进行相应的转换以保证数据的一致性。 文档还...

    Flex 开发技巧集

    14. **BigEndian和LittleEndian测试**:在ByteArray中,`endian`属性用于设置字节序,`BIG_ENDIAN`表示大端字节序,`LITTLE_ENDIAN`表示小端字节序。这两个概念在处理二进制数据时非常重要,特别是在跨平台通信和...

    PCI9052芯片在话音处理单元中的应用.pdf

    在字节序的处理上,PCI9052芯片支持BigEndian和LittleEndian字节间的转换。在以查询方式编程时,LRDYi#(Local Ready Input)信号用于产生等待状态。除此之外,它还提供ISA逻辑接口模式,支持PCI总线到ISA总线的单...

    医学CT断层图像三维重建的Matlab实现方法.pdf

    DICOM提供了三种语义:IMPLICIT VR、BIGENDIAN和LITTLEENDIAN,规定了数据元素值的类型项是否出现,值域的长度项的字节数,以及字节在内存中的存储次序。 在MATLAB环境下,可以利用其图像处理工具箱中的dicomread()...

    java nio教程

    - **ByteOrder**:定义了字节序,即字节如何在内存中存储,包括BigEndian和LittleEndian。 3. **NIO的非阻塞I/O** - **非阻塞读**:当缓冲区未满时,read()操作不会阻塞,而是立即返回可用数据。 - **非阻塞写**...

    nettyObject:关于 netty 的例子

    3. **ByteOrder**:定义了字节顺序,Netty 支持 BigEndian 和 LittleEndian。 4. **ChannelHandlerContext**:在 Pipeline 中提供对 Channel、EventLoop 和其他 Handler 的访问,是触发事件和传递消息的主要方式。 ...

    netty:netty原始中文注释

    10. **ByteOrder**: Netty支持BigEndian和LittleEndian两种字节顺序,可以根据需要设置。 11. **协议支持**: Netty支持多种协议,如HTTP、WebSocket、FTP、SMTP、DNS等,同时也方便扩展自定义协议。 通过阅读这个...

    byteorder:Rust库,用于按大端和小端读写数字

    像这样将其添加到您的Cargo.toml : [ dependencies ]byteorder = " 1 " 如果要增强现有的Read和Write特征,请导入扩展方法,如下所示: use byteorder :: {ReadBytesExt, WriteBytesExt, BigEndian, LittleEndian}...

    获知计算机大小端C++

    在计算机科学中,数据在内存中的存储方式有两种主要模式,即大端(BigEndian)和小端(LittleEndian)。这两种模式决定了多字节数据(如整数或浮点数)在内存中的字节顺序。大端模式是指最高有效字节位于最低地址,...

    TPSLRawDataSimulator

    将StructToRaw属性StructToRaw一个结构,以指示序列化程序使用BigEndian或LittleEndian。 接受字段的MarshalAs属性,您可以: 数组字段的UnmanagedType.ByValArray和ArraySubType在序列化时将获得转录或填充。 ...

    endian c++大小端编辑

    在这个示例中,`isBigEndian`函数检查当前系统是否为大端,`bigToLittle`和`littleToBig`负责转换字节序。`readBigEndianInt`从文件中读取大端整数,`writeBigEndianInt`将大端整数写入文件。这些函数可以在跨字节序...

    琴谱_test_Big!_poemg6v_

    大端(Big Endian)与小端(Little Endian)详解 - 凌风探2016年4月2日 - 大端(BigEndian)与小端(LittleEndian)简介///1.你从哪里来?端模式(Endian)的... 将鸡蛋敲开的人被归为BigEndian从尖头开始将鸡蛋敲开的人被归为...

    字节转换代码参考.rar

    stream.setByteOrder(QDataStream::BigEndian); // 或者使用 LittleEndian stream ; ``` 2. **shortToByte**: 类似地,将短整型转换为字节,可以使用QDataStream的写入操作: ```cpp short s = 32767; ...

    商业编程-源码-TIF格式图像文件初探.zip

    2. **图像数据存储**:TIFF文件可以存储图像数据为不同的样本布局,如PlanarConfiguration(单色或分色平面),以及像素的字节顺序(BigEndian或LittleEndian)。 3. **压缩算法**:TIFF支持多种压缩方法,包括无损...

    DICOM文件.rar

    DICOM文件的字节顺序分为BigEndian(大端模式)和LittleEndian(小端模式)。LittleEndian格式在DICOM文件中意味着数据的低字节存储在内存的低地址,而高字节存储在高地址。这种排列方式与许多现代计算机系统(如...

    PCAP:用于PCAP数据包捕获的DFDL模式

    如果要解析littleEndian pcap文件并将其写出littleEndian,则必须绑定外部变量dfdl:byteOrder(默认为“ bigEndian”)。 它将很好地解析,但是在写出时将默认使用bigEndian,除非您绑定外部变量。

Global site tag (gtag.js) - Google Analytics