字符串和二進制串相互轉換(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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM