永发信息网

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

答案:3  悬赏:70  手机版
解决时间 2021-02-15 09:25
  • 提问者网友:心牵心
  • 2021-02-14 11:58
比如我现在有一串字符:char[8]="01101100",同时又有一个byte变量(其实就是unsigned char),我怎么按位操作吧这个八个字符一个个写进去呢?
THANKYOU!我还想问问byte a=0xC的话怎么按位读取成字符串呢?我想到的方法是一位位地比较同时写字符串。不知有没有更好的办法?本人新手哈^^
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-02-14 13:38
#include<iostream.h>

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<<endl;
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<<ch<<endl;
return 0;
}

主要就是进行移位操作和位或运算~~如果还有什么不明白的话,可以继续追问~~
全部回答
  • 1楼网友:由着我着迷
  • 2021-02-14 15:57
byte a; char b[8]="01101100"; a=0; for(i=0;i<8;i++) { a=a<<1; if (b[i]=='1') { a |=1; } }
  • 2楼网友:往事埋风中
  • 2021-02-14 14:35
用标准库的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> 来进行存取。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯