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);
}