[笔记]一道C语言面试题:写一个宏,将16位的整数转为Big Endian

题目:输入16位整数x,如0x1234,将其转为Big Endian格式再输出,此例为输出 0x3412

来源:某500强企业面试题目

思路:将x左移8位得到a,将x右移8位得到b,a+b即为所得

//----------------------------------------

// 写一个宏,将16位的整数转为Big Endian

//----------------------------------------



#define ConvertToBigEndian(x) (((x)<<8) & 0xFF00) +(((x)>>8) & 0x00FF)



void TestConvertToBigEndian(void) {

  short a = 0;

  short b = 0;



  // 下面输出为:ConvertToBigEndian(0x1234) = 0x3412

  a = 0x1234;

  b = ConvertToBigEndian(a);

  printf("ConvertToBigEndian(0x%04X) = 0x%04X\n", a, b);



  // 下面输出为:ConvertToBigEndian(0x12) = 0x1200

  a = 0x12;

  b = ConvertToBigEndian(a);

  printf("ConvertToBigEndian(0x%04X) = 0x%04X\n", a, b);

}
Technorati 标签: ,

你可能感兴趣的:(C语言)