C笔试题(判断大端小端模式及大小端模式转换)

判断大端小端模式

int checkEndion( void )
{
    union check
    {
        int i;
        char ch;
    }c;
    c.i = 1;
    return (c.ch ==1);
}

变量 i 占 4 个字节,但只有一个字节的值为 1,另外三个字节的值都为 0。如果取出低地址上的值为 0,毫无疑问,这是大端模式;如果取出低地址上的值为 1,毫无疑问,这是小端模式。


大小端模式转换

#define ___swab32(x)

{

            __u32 __x = (x);

            ((__u32)(

                        (((__u32)(__x) & (__u32)0x000000ffUL) << 24) |

                        (((__u32)(__x) & (__u32)0x0000ff00UL) << 8) |

                        (((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) |

                        (((__u32)(__x) & (__u32)0xff000000UL) >> 24) ));

}


你可能感兴趣的:(c)