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.
>
code example of big endian and little endian
// 2-byte number
int SHORT_little_endian_TO_big_endian(int i)
{
return ((i>>8)&0xff)+((i << 8)&0xff00);
}
// 4-byte number
int INT_little_endian_TO_big_endian(int i)
{
return((i&0xff)<<24)+((i&0xff00)<<8)+((i&0xff0000)>>8)+((i>>24)&0xff);
}
本文介绍了le32_to_cpu和cpu_to_le32宏的作用及使用场景。前者用于将32位小端序数据转换为CPU本机字节序,后者则进行相反的操作。通过这些宏可以清晰地表明代码中数据的字节序状态,提高代码可读性。
4447

被折叠的 条评论
为什么被折叠?



