|
学会使用联合。
也可以用指针进行强制转换后引用,不过不直观,很容易。
1、联合
union
{
unsigned int A;
unsigned char B[2];
}C;
2、指针
unsigned int A;
unsigned char B[2];
B[0]=*((unsigned char *)&A);
B[1]=*(((unsigned char *)&A)+1);
还可以这样:
uint16 get_int16(uint8 msb, uint8 lsb)
{
uint16 result;
result = (uint16)msb<<8 + lsb;
// 或者
result = (uint16)msb*256 + lsb;
return result;
}
不过这样得到的结果只在大端处理器中才能符合LZ的字节序要求(不影响使用,如果你的处理器是小端的,调用时只要互换msb和lsb的参数位置就可以了);这也正是它的优点:代码与特定硬件平台的字节序无关。可以参考MS VC++中的MAKEWORD宏的实现方法。