c++字节操作,按位操作问题

2025-02-22 12:30:13
推荐回答(3个)
回答1:

#include

int main()
{
char ch[9]={"01101100"};
byte data = 0;
for (int i=0;i<9;i++)
{
if (ch[i]=='1')
{
data|=(1<<(7-i));
}
}
cout<<(int)data< return 0;
}

补充的问题:只要反过来就可以了

int main()
{
char ch[9];
byte data = 0xc;
for (int i=0;i<9;i++)
{
if (data&(1<<(8-i)))
{
ch[i] = '1';
}
else
ch[i]='0';
}
ch[i]='\0';
cout< return 0;
}

主要就是进行移位操作和位或运算~~如果还有什么不明白的话,可以继续追问~~

回答2:

用标准库的bitset类型可以按位处理。
#include
using
std::bitset;
bitset
b1;
//
b1有n位,每位都为0
bitset
b2(u);
//
b2是unsigned
long型u的一个副本
bitset
b3(s);
//
b3是string对象s中含有的位串的副本
bitset
b4(s,
pos,
n);//
b4是s中从位置pos开始的n个位的副本
可以用bitset<8>
来进行存取。

回答3:

byte a;
char b[8]="01101100";
a=0;
for(i=0;i<8;i++)
{
a=a<<1;
if (b[i]=='1')
{
a |=1;
}
}