首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

bit变换为byte

2013-01-09 
bit转换为byte先传一个字节来,然后进入函数后拆分成bit,后三位的bit用来判断程序里的参数,0x07的话,0x0000

bit转换为byte
先传一个字节来,然后进入函数后拆分成bit,后三位的bit用来判断程序里的参数,0x07的话,0x00000111;
即a,b,c对应的参数为是,如果是0x05;0x00000101;则a和c参数为是,b参数为否。
我现在拆分出来了,但是不知道怎么重新转化为byte。。
就是如何把已经赋值的a,b,c重新放在这个byte的后三位里。
int bits;
char *e;
char *a;
for(int i=0;i<8;i++)
{
   bits((*(e))>>i) & 0x01
   if(i==0)
   {
      a=(char *)&bits;
      break;
   }
}
拆分基本是这么写的,但是不知道怎么重新组合起来。
[解决办法]
(a<<2) 
[解决办法]
 (b<<1) 
[解决办法]
 c
[解决办法]
逻辑很混乱,判断后三位很简单的:


switch(*e & 0x07)
{
case 0x07:
    ...
    break;
case 0x05:
    ...
    break;
default:
    ...
    break;
}

[解决办法]
也可以考虑用位域。
[解决办法]
不好意思,之前随便写了下,错误百出。。。

#include "stdafx.h"

#define A 0x01
#define B 0x02
#define C 0x04

typedef unsigned char BYTE;

int main()
{
BYTE n = 0x07;//0000 0111
BYTE a;
BYTE b;
BYTE c;

//拆分
a = (n & A) >> 0;//1
b = (n & B) >> 1;//1
c = (n & C) >> 2;//1

//组合
n = (a<<0) 
[解决办法]
 (b<<1) 
[解决办法]
 (c<<2);//0000 0111

return 0;
}

热点排行