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;
}