bigendian littleendian

    技术2022-05-11  52

    一个16位整数,由两个字节组成。内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,称为little-endian字节序,另一种方法是将高序字节存储在起始地址,称为big-endian字节序。术语little-endian和big-endian表示多字节的哪一端存储在该值的起始地址。   例如:0x0102   little-endian: A    0x02    A+1  0x01                            big-endian:   A    0x01    A+1  0x02 测试程序: #include <stdio.h>#include <stdlib.h>int main(void){    short int a = 0x1234;    char *p = (char *)&a;        printf("p=%#hhx/n",*p);    if(*p == 0x34)         printf("Little endian /n");    else if(*p == 0x12)         printf("Big endian /n");    else         printf("Unknow endian /n");    return 0;} 转换(用宏) typedef unsigned int u32;typedef unsigned short u16; #define BSWAP_16(x) /          ( (((x) & 0x00ff) << 8 ) | /     (((x) & 0xff00) >> 8 ) /     )#define BSWAP_32(x) /     (u32) ( (( ((u32)(x)) & 0xff000000 ) >> 24) | /                    (( ((u32)(x)) & 0x00ff0000 ) >> 8 ) | /     (( ((u32)(x)) & 0x0000ff00 ) << 8 ) | /     (( ((u32)(x)) & 0x000000ff ) << 24) /              )  

    最新回复(0)