直接上代码
//16位 0101重组成long
float cqlCharBytePrintf(char byData1,char byData2){
int n0, n1, n2, n3, n4, n5, n6, n7;
n0 = (byData1 & 0x01) == 0x01 ? 1 : 0;//底位
n1 = (byData1 & 0x02) == 0x02 ? 1 : 0;
n2 = (byData1 & 0x04) == 0x04 ? 1 : 0;
n3 = (byData1 & 0x08) == 0x08 ? 1 : 0;
n4 = (byData1 & 0x10) == 0x10 ? 1 : 0;
n5 = (byData1 & 0x20) == 0x20 ? 1 : 0;
n6 = (byData1 & 0x40) == 0x40 ? 1 : 0;
n7 = (byData1 & 0x80) == 0x80 ? 1 : 0;//高位
int m0, m1, m2, m3, m4, m5, m6, m7;
m0 = (byData2 & 0x01) == 0x01 ? 1 : 0;//底位
m1 = (byData2 & 0x02) == 0x02 ? 1 : 0;
m2 = (byData2 & 0x04) == 0x04 ? 1 : 0;
m3 = (byData2 & 0x08) == 0x08 ? 1 : 0;
m4 = (byData2 & 0x10) == 0x10 ? 1 : 0;
m5 = (byData2 & 0x20) == 0x20 ? 1 : 0;
m6 = (byData2 & 0x40) == 0x40 ? 1 : 0;
m7 = (byData2 & 0x80) == 0x80 ? 1 : 0;//高位
//重组
bitset <16> bitas;
bitas.set(0,n0);//这是低位
bitas.set(1,n1);
bitas.set(2,n2);
bitas.set(3,n3);
bitas.set(4,n4);
bitas.set(5,n5);
bitas.set(6,n6);
bitas.set(7,m0);
bitas.set(8,m1);
bitas.set(9,m2);
bitas.set(10,m3);
bitas.set(11,m4);
bitas.set(12,0);
bitas.set(13,0);
bitas.set(14,0);
bitas.set(15,0);//这是高位
//转电压
float tmvnum = (float)bitas.to_ulong()*((float)3300/(float)4095);
float tvnum = tmvnum/1000;
return tvnum;
}
#include <bitset>
using namespace std;
//8个bit转char
bitset <8> a;
a.set(0,1);
a.set(1,1);
a.set(2,1);
a.set(3,1);
a.set(4,1);
a.set(5,0);
a.set(6,1);
a.set(7,1);
printf("\n");//换行
printf("%#X",a.to_ulong());
printf("\n");//换行
//8个bit转char
bitset<8> foo ("11111111");
printf("%#X",foo.to_ulong());
//char转字节打印
void charBytePrintf(char byData){
printf("byte\n");
int n0, n1, n2, n3, n4, n5, n6, n7;
n0 = (byData & 0x01) == 0x01 ? 1 : 0;
n1 = (byData & 0x02) == 0x02 ? 1 : 0;
n2 = (byData & 0x04) == 0x04 ? 1 : 0;
n3 = (byData & 0x08) == 0x08 ? 1 : 0;
n4 = (byData & 0x10) == 0x10 ? 1 : 0;
n5 = (byData & 0x20) == 0x20 ? 1 : 0;
n6 = (byData & 0x40) == 0x40 ? 1 : 0;
n7 = (byData & 0x80) == 0x80 ? 1 : 0;
printf("%d",n0);
printf("%d",n1);
printf("%d",n2);
printf("%d",n3);
printf("%d",n4);
printf("%d",n5);
printf("%d",n6);
printf("%d",n7);
printf("\n%#x",byData);
}
char转8个字节
//转8bit
void convert(char c)
{
char result[8]={0};
for(int i=0;i<8;i++)
result[i]=c&(0x01<<i);
}
//8个1的bit转char
bitset <8> bitas;
bitas.set(0,1);
bitas.set(1,1);
bitas.set(2,1);
bitas.set(3,1);
bitas.set(4,1);
bitas.set(5,1);
bitas.set(6,1);
bitas.set(7,0);
printf("%#X,",bitas.to_ulong());
fprintf(fp,"%#X,",bitas.to_ulong());//这里可以写入文本