字符串和二进制串相互转换(C++)
bitset库实现
一、字符转化成二进制
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
//字符转化成二进制串
bitset<8> bits = bitset<8>('a');
bitset<1> tmp;
//二进制翻转
for(int i=0;i<4;i++)
{
tmp[0] = bits[i];
bits[i] = bits[7-i];
bits[7-i] = tmp[0];
}
//输出
for(int i=0;i<8;i++)
cout<<bits[i];
}
二、字符串转化成二进制字符串
#include <iostream>
#include <bitset>
#include <string>
#include <algorithm>
using namespace std;
//将8位字符串转化为64bit
string StrToBitStr(string str)
{
bitset<64> bstr ;
for(int i=0;i<8;i++)
{
bitset<8> bits = bitset<8>(str[i]);
cout<<str[i]<<endl;
for(int j = 0;j<8;j++)
{
bstr[i*8+j] = bits[7-j];
}
}
string s = bstr.to_string();
//添加一个翻转操作
reverse(begin(s),end(s));
return s;
}
int main()
{
string bstr = StrToBitStr("generate");
cout<<bstr<<endl;
}
三、二进制字符串转化成字符串
#include <iostream>
#include <bitset>
#include <string>
#include <algorithm>
using namespace std;
//将8位字符串转化为64bit
string StrToBitStr(string str)
{
bitset<64> bstr ;
for(int i=0;i<8;i++)
{
bitset<8> bits = bitset<8>(str[i]);
cout<<str[i]<<endl;
for(int j = 0;j<8;j++)
{
bstr[i*8+j] = bits[7-j];
}
}
string s = bstr.to_string();
//添加一个翻转操作
reverse(begin(s),end(s));
return s;
}
//将64bit二进制字符串转化为字符串
string BitStrToStr(string bstr)
{
string str="";
//每八位转化成十进制,然后将数字结果转化成字符
int sum;
for(int i=0;i<bstr.size();i+=8)
{
sum=0;
for(int j=0;j<8;j++)
if(bstr[i+j] == '1')
sum = sum*2+1;
else
sum = sum*2;
str =str+char(sum);
}
return str;
}
int main()
{
string bstr = StrToBitStr("generate");
cout<<bstr<<endl;
cout<<BitStrToStr(bstr)<<endl;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战