比如我现在有一串字符:char[8]="01101100",同时又有一个byte变量(其实就是unsigned char),我怎么按位操作吧这个八个字符一个个写进去呢?
THANKYOU!我还想问问byte a=0xC的话怎么按位读取成字符串呢?我想到的方法是一位位地比较同时写字符串。不知有没有更好的办法?本人新手哈^^
c++字节操作,按位操作问题
答案:3 悬赏:70 手机版
解决时间 2021-02-15 09:25
- 提问者网友:心牵心
- 2021-02-14 11:58
最佳答案
- 五星知识达人网友:青灯有味
- 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;
}
主要就是进行移位操作和位或运算~~如果还有什么不明白的话,可以继续追问~~
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> 来进行存取。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯