如何将两个16bit的数据保存到32位数据中, 并且可以很好的恢复?
eg: 变量a, b分别只需要16bit就可以保存. 但现在用什么方法保存到32位的变量出t中呢?
方法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
int t
short int a, b;
a = -7;
b = -1;
t = (a << 16) | (b & 0xffff);
printf("sizeof(short int) : %d\n", sizeof(short int));
printf("high=%d, low=%d, t=%08x, t_high=%d, t_low=%d\n",
a, b, t, t >> 16, (short int)(t & 0xffff));
return (0);
}
|
注意的问题:
1>. a, b变量可以为负数的, 如果只可以为正数就方便了.
2>. 对b变量的一次"b & 0xffff", 和第二次的强制转换不可以少的.
别的方法等待中......
阅读(2836) | 评论(4) | 转发(0) |