Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4043015
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类: C/C++

2006-12-07 11:41:38

如何将两个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) |
给主人留下些什么吧!~~