`

Big Endian与Little Endian区别

阅读更多

Big Endian与Little Endian区别

1. 什么是Big Endian和Little Endian?

在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的
最右边部分(也就是数据的最低位部分)。比如一个16进制数字0x12345678,在内存存放的方式如下:

       低地址 ------------------> 高地址
       ####################################################
值    #0111,1000 #0101,0110 # 0011,0100  #  0001,0010  #
       ####################################################
地址 #      100        #     101        #          102       #      103          #
       ####################################################

 另一种称为big-endian,正好相反,存放在内存中最低位的数值是来自数据的最左边边部分(也就是数据的最高为部分)。
 比如一个16进制数字0x12345678,在内存存放的方式如下:


       低地址 ------------------> 高地址
       ####################################################
 值   # 0001,0010  #0011,0100 # 0101,0110  #  0111,1000  #
       ####################################################
地址 #       100         #     101         #        102        #        103         #
       ####################################################


从上面的例子可以看到,采用big endian方式存储数据是符合我们人类的思维习惯的


big endian:是指低地址存放最高有效字节(MSB:Most Significant Byte, 最高有效字节),
little endian:则是低地址存放最低有效字节(LSB:Least Significant Byte, 最低有效字节)


谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。
IBM, Motorola(Power PC), Sun的机器一般采用大端(big endian)方式存储数据。而x86系列则采用
little endian方式存储数据

是Little Endian还是Big Endian与操作系统和芯片类型都有关系。 具体情形参考处理器手册。

2. 如何判断系统是Big Endian还是Little Endian

在/usr/include/中(包括子目录)查找字符串BYTE_ORDER(或_BYTE_ORDER, __BYTE_ORDER),确定其值。
这个值一般在endian.h或machine/endian.h文件中可以找到,有时在feature.h中,不同的操作系统可能
有所不同。一般来说,Little Endian系统BYTE_ORDER(或_BYTE_ORDER,__BYTE_ORDER)为1234,Big Endian系统为4321


3. 为什么要注意字节序的问题?

在单机环境里的程序不用考虑字节序(endian)的问题,因为字节序的不同是在不同单机环境里的,如果你要在不同单机
之间传递数据,就要考虑字节序的问题,因为数据是按地址存取的,如果你是不同的字节序单机通信,就会导致传输数据
”变异“,例如,把little endian环境的数据0x12345678的指针传递给big endian环境,数据就“变异”为0x78563412

所有网络协议也都是采用big endian的方式来传输数据的。所以有时我们也会把big endian方式称之为网络字节序。当两台采
用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。

在异构主机数据库迁移的过程一定要注意这个,如果字节序不同,可以用rman convert转换字节序(endian)

例如:

RMAN TARGET /
CONVERT TABLESPACE ts1,ts2 TO PLATFORM 'Linux IA (32-bit)' FORMAT '/tempdir/%U';

分享到:
评论

相关推荐

    nohead big endian to little endian

    nohead data big endian to little endian

    Big Endian & Little Endian.pdf

    ### Big Endian与Little Endian详解 #### 一、引言 在计算机科学领域中,数据存储的方式至关重要,尤其是在涉及跨平台数据交换时。本文旨在详细介绍两种常见的数据存储格式:Big Endian(大端模式)与Little Endian...

    大端(Big Endian)与小端(Little Endian)简介

    这些字节如何在内存中排列,涉及到两种主要的存储方式——大端(Big Endian)与小端(Little Endian)。本文将深入探讨这两种存储方式的概念、原理及其应用场景。 #### 二、大端与小端的定义 1. **大端表示法(Big...

    little endian和big endian的概念解释

    - **Big Endian**:与此相反,在这种格式下,较高有效字节被存储在较低的内存地址位置,而较低有效字节则被存储在较高的内存地址位置。 #### 二、具体实例 为了更好地理解这两种格式的区别,我们可以以一个具体的...

    Little_Big_endian.rar_big endian_little

    这里我们主要讨论两种字节顺序:大端字节序(Big-endian)和小端字节序(Little-endian)。这两个术语源自Gulliver's Travels中的两个部落名称,用来形象地描述数据在内存中的排列方式。 标题“Little_Big_endian....

    大端(Big_Endian)与小端(Little_Endian)简介

    在计算机科学领域,大端(Big Endian)与小端(Little Endian)指的是数据(特别是多字节整数)在内存中存储时的字节顺序。这两种表示方法主要应用于不同类型的计算机体系结构中,对软件开发尤其是跨平台编程具有...

    Big-and-Little-Endian.rar_LIt_endian_little

    在计算机科学中,大端字节序(Big-Endian)和小端字节序(Little-Endian)是两种主要的数据存储方式,对于理解和编写跨平台应用程序的开发者来说至关重要。这两种字节序涉及到如何在内存中存储多字节数据类型,如...

    字符编码转换类,支持 ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom互相转换

    2. Unicode:这是一个标准,定义了所有已知字符的唯一数字表示,分为Little Endian和Big Endian两种字节顺序。Little Endian先存储低字节,Big Endian则先存储高字节。 3. UTF-8:一种变长的Unicode编码,用1到4个...

    little endian,big endian 小端存储、大端存储.zip

    little endian,big endian 小端存储、大端存储.zip

    Macro-test-mode-test-system.zip_endian_little endian

    Endianness 主要分为两种:大端法(Big Endian)和小端法(Little Endian)。这个名为 "Macro-test-mode-test-system.zip_endian_little_endian" 的压缩包文件是为了帮助用户检测他们的个人计算机(PC)使用的是哪种...

    大端(Big Endian)与小端(Little Endian)简介.doc

    大端(Big Endian)与小端(Little Endian)是指计算机系统中多字节数据在内存中的存储方式。这个概念主要涉及到处理器架构和数据表示,对于跨平台编程和网络通信尤其重要。Endianness的问题源于不同的计算机系统...

    字符编码转换 Text、ANSI、Unicode、Unicode Big Endian、UTF-8、UTF-7

    本篇文章将深入探讨标题中提及的几种字符编码:Text、ANSI、Unicode(包括Little Endian和Big Endian)、UTF-8以及UTF-7,并介绍它们之间的转换。 1. **Text编码**: 在Windows系统中,通常所说的"Text"编码是指...

    STM32F103CB_Big_Little_Endian_Demo.zip

    基于STM32HAL库,USART-调试串口(大小端测试),对应文章:https://blog.csdn.net/qq_36075612/article/details/115935138?spm=1001.2014.3001.5501

    字节存储顺序: little-endian小端,big-endian大端 教程

    你是否遇到过,内存中的数据顺序颠倒 你存入1234,实际存储的是3412. 字节存储顺序: little-endian小端,big-endian大端 教程 主机序,网络序 hton,ntoh

    is-little-endian:检查您的系统是否为小端

    buffer ) ) [ 0 ] === 0x04030201 )用法使用 npm 安装: npm install is-little-endian然后像这样使用它: if ( require ( "is-little-endian" ) ) { // Use little endian buffer} else { // Use big endian ...

    判断CPU大小端模式

    请写一个C函数,若处理器是Big_endian的,则返回 0;若是Little_endian的,则返回1。 • 函数原型:int checkCPU( );

    解析大端模式和小端模式

    目前主要存在两种字节序类型:大端模式(Big Endian)与小端模式(Little Endian)。这两种模式直接影响着程序在不同系统之间的兼容性以及网络通信中数据包的解码。 #### 大端模式(Big Endian) 大端模式是指在多...

    西门子PLC接口,大端和小-Endian的存储格式.pdf

    西门子PLC接口,大端和小-Endian的存储格式pdf,西门子PLC接口,大端和小-Endian的存储格式:本文介绍了SINUMERIK:PLC接口,和Little-Endian的Big-Endian的存储格式

    网络字节序和主机字节序

    例如,在 TCP/IP 协议中,网络字节顺序采用 Big Endian 排序方式,而在某些嵌入式系统中,可能使用 Little Endian 或 Big Endian。 字节序是计算机科学中一个重要的概念,它对计算机程序的正确执行和数据传输的正确...

Global site tag (gtag.js) - Google Analytics