`
aijuans
  • 浏览: 1573403 次
社区版块
存档分类
最新评论

大端小端转换,le32_to_cpu 和cpu_to_le32

阅读更多

大端小端转换,le32_to_cpu 和cpu_to_le32

 字节序

http://oss.org.cn/kernel-book/ldd3/ch11s04.html

        小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高级的平台以另一种方式(大端)工作. 任何可能的时候, 你的代码应当这样来编写, 它不在乎它操作的数据的字节序. 但是, 有时候一个驱动需要使用单个字节建立一个整型数或者相反, 或者它必须与一个要求一个特定顺序的设备通讯.

        包含文件 <asm/byteorder.h> 定义了或者 __BIG_ENDIAN 或者 __LITTLE_ENDIAN, 依赖处理器的字节序. 当处理字节序问题时, 你可能编码一堆 #ifdef __LITTTLE_ENDIAN 条件语句, 但是有一个更好的方法. Linux 内核定义了一套宏定义来处理之间的转换, 在处理器字节序和你需要以特定字节序存储和加载的数据之间. 例如:

u32 cpu_to_le32 (u32);
u32 le32_to_cpu (u32);

        这 2 个宏定义转换一个值, 从无论 CPU 使用的什么到一个无符号的, 小端, 32 位数, 并且转换回. 它们不管你的 CPU 是小端还是大端, 不管它是不是 32-位 处理器. 在没有事情要做的情况下它们原样返回它们的参数. 使用这些宏定义易于编写可移植的代码, 而不必使用大量的条件编译建造.

        有很多类似的函数; 你可以在 <linux/byteorder/big_endian.h> 和 <linux/byteorder/little_endian.h> 中见到完整列表. 一会儿之后, 这个模式不难遵循. be64_to_cpu 转换一个无符号的, 大端, 64-位 值到一个内部 CPU 表示. le16_to_cpus, 相反, 处理有符号的, 小端, 16 位数. 当处理指针时, 你也会使用如 cpu_to_le32p, 它使用指向一个值的指针来转换, 而不是这个值自身. 剩下的看包含文件.

 

Then when do we use le32_to_cpu( ) , and when do we use cpu_to_le32( )? 
> 
> The names tell it.

> le32_to_cpu is used for convesions from 32bit little endian data into CPUs endianness

> cpu_to_le32 is used for convesions from CPU endianness to little endian 32bit data. 
> Actually, both macros do the same thing, but one should make the differences clear to make code more readable so that anyone can quickly find out whether some data is kept in native endianness or some particular one. 

 

分享到:
评论

相关推荐

    字节序转换辅助类,字节大端小端转换

    字节序转换辅助类,short大小端转换,ushort大小端转换,int大小端转换,uint大小...short类型 小端转大端,short类型 大端转小端,int类型 小端转大端,int类型 大端转小端,long类型 小端转大端,long类型 大端转小端

    大端小端模式

    根据数据的高位和低位在内存中的存储顺序,大端小端模式可以分为两种:大端模式和小端模式。 大端模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。例如,在大端模式下,16位宽的数 0x...

    二进制文件大小端转换工具,

    这种顺序在不同的计算机架构中可能不同,分为大端模式(Big-Endian)和小端模式(Little-Endian)。大端模式下,高字节存储在内存地址较低的位置,而小端模式则相反,低字节在前。 标题中的“二进制文件大小端转换...

    TIA博途-32位浮点数大小端存储-高低字节转换全局FB库文件(4种字节排列顺序)-V17版本.zip

    TIA博途中的全局FB库文件"GF_Float_32Bit_ByteMode_Convert"很可能提供了一套函数块,用于处理32位浮点数在大端和小端模式之间的转换。这个库可能包含了四个不同的实现,对应四种字节排列顺序,以满足各种情况的需求...

    大小端转换(C++)

    提供一个大小端转换的类,可以转换short int float double类型,提供一个大小端转换的类,可以转换short int float double类型,提供一个大小端转换的类,可以转换short int float double类型

    小端 LE 大端 BE 转换程序

    实现文件大端模式 (BIG ENDIAN)与小端模式(LITTER ENDIAN)的互相转换。 程序使用很简单,选择文件(只能选择bin格式结尾的镜像) 然后点转换就ok啦~~文件不支持其他后缀的 如果需要转换,把后缀改成.bin也ok~~...

    大端小端 简单描述

    例如,将一个 32 位的整数 0x12345678 存放到一个整型变量中,采用大端模式和小端模式的存储顺序如下所示: 地址偏移 大端模式 小端模式 0x0012 12(OP0) 78(OP3) 0x0134 34(OP1) 56(OP2) 0x0256 56(OP2) ...

    关于大小端--大端 小端 大小端

    大端模式和小端模式的区别在于如何安排数据的高位和低位字节在内存地址上的分布。 大端模式,也称为大端字节序,其特点是数据的最高有效位(MSB,Most Significant Bit)位于内存的最低地址。换句话说,数值的"更...

    javolution实现大小端转换java

    java实现使用javolution完成数据接收过程中大小端转换的问题

    十进制转十六进制包含大小端设置_大小端_matlab_十进制_十六进制_

    在计算机科学中,数据在内存中的存储方式有两种主要格式,即大端模式(Big-Endian)和小端模式(Little-Endian)。这两种模式涉及到多字节数据如何在字节序列中排列,对于理解和处理二进制数据至关重要。本文将详细...

    大端模式和小端模式的概念,区别以及优缺点

    在实际应用中,许多系统提供了字节序转换函数,如C语言中的`htons()`、`ntohs()`等,用于在大端和小端模式间进行转换。了解并掌握这两种模式对于理解和解决跨平台问题非常关键。阅读“大端模式与小端模式.pdf”这个...

    iOS 大端格式和小段格式

    ### iOS 大端格式和小端格式 #### 一、概念与原理 计算机系统中,对于多字节数据类型的处理存在两种不同的字节顺序:**大端格式**(Big-endian)与**小端格式**(Little-endian)。这两种格式的区别在于如何在内存...

    Float类型大小端转换测试程序

    标题中的“Float类型大小端转换测试程序”是一个用于验证和实现浮点数在大端和小端系统之间转换的代码。浮点数由多个字节组成,如32位的单精度浮点数包含一个符号位、8位指数和23位尾数。在不同的字节序系统中,这些...

    字节转浮点数.zip ,4字节转浮点数,大端小端转换软件,window版本

    它允许用户将4字节的二进制数据转换为浮点数,同时考虑了不同系统的大端和小端字节序问题。 浮点数在计算机内部是以二进制格式存储的,遵循IEEE 754标准,它定义了如何将浮点数转换成字节序列以及如何从字节序列...

    详解大端模式和小端模式

    在计算机科学中,大端模式和小端模式被用来描述多字节数据类型(如16位的short,32位的int等)在内存中的存储顺序。 1. 大端模式(Big-Endian): 在大端模式中,数据的最高有效字节存储在最低的内存地址,而最低...

    解析大端模式和小端模式

    ### 解析大端模式和小端模式 在计算机科学领域,数据存储格式是理解硬件与软件交互的关键之一。其中,字节序(Byte Order)是一个重要概念,它指的是多字节数据类型(如整数、浮点数等)在内存中的存储顺序。目前...

    大端序和小端序

    "大端序和小端序" 大端序和小端序是计算机科学中的一种概念,用于描述多字节数据在内存中的存储顺序。这种顺序对于跨平台和网络程序非常重要,因为不同的平台和网络协议可能使用不同的字节序。 字节序可以分为两类...

    小端大端透析-附检测代码

    小端大端透析-附检测代码 小端大端是计算机领域中两个基本概念,分别指的是计算机存储数据的两种方式...这篇文章希望通过详细的解析和实例代码帮助读者彻底解决小端和大端的混淆,让读者更好地理解和应用这两个概念。

    win7 x86 大端 小端 判断

    运行程序,可判识并输出程序所在平台的存储方式,是大端还是小端。

    关于大端小端的说明.xlsx

    自己根据spy3中的大端与小端的使用,总结出大小端的理解与区别,及intel与motorola

Global site tag (gtag.js) - Google Analytics