21xrx.com
2024-12-27 21:21:39 Friday
登录
文章检索 我的文章 写文章
C++中将字符串转换为二进制字符串的方法
2023-07-04 18:15:49 深夜i     --     --
C++ 字符串 二进制字符串 转换

在C++编程中,有时需要将字符串转换为二进制字符串。这种转换可以用于加密、压缩、文件传输等处理。本文将介绍如何在C++中将字符串转换为二进制字符串。

首先,我们需要明确字符串和二进制字符串的含义。字符串是由若干个字符组成的序列,通过指针可以访问到这些字符。而二进制字符串是一种特殊的字符串,它的每个字符都是二进制数。例如,字符'0'的二进制表示为00110000,字符'1'的二进制表示为00110001。

在C++中,可以使用以下方法将字符串转换为二进制字符串:

1. 使用bitset类

bitset类是C++中处理二进制数的库之一,它可以将一个整数转换为二进制数并存储在一个bitset对象中。对于字符串,可以先将每个字符转换为整数再使用bitset进行转换。具体代码如下:


#include <bitset>

#include <string>

#include <iostream>

using namespace std;

string strToBinStr(string str) {

  string binStr = "";

  for (char c : str) {

    int ascii = static_cast<int>(c);

    binStr += bitset<8>(ascii).to_string();

  }

  return binStr;

}

int main() {

  string str = "Hello, world!";

  string binStr = strToBinStr(str);

  cout << binStr << endl; // 0100100001100101011011000110110001101111001000000111011101101111011100100110110001100100...

  return 0;

}

2. 使用stringstream类

stringstream类可以将各种基本类型转换为字符串,并且可以指定进制。对于字符串,可以将每个字符转换为整数再使用stringstream进行转换。具体代码如下:


#include <iostream>

#include <string>

#include <sstream>

using namespace std;

string strToBinStr(string str) {

  string binStr = "";

  for (char c : str) {

    int ascii = static_cast<int>(c);

    stringstream ss;

    ss << hex << ascii;

    int n;

    ss >> n;

    ss.clear();

    ss << bitset<8>(n).to_ulong();

    binStr += ss.str();

  }

  return binStr;

}

int main() {

  string str = "Hello, world!";

  string binStr = strToBinStr(str);

  cout << binStr << endl; // 0100100001100101011011000110110001101111001000000111011101101111011100100110110001100100...

  return 0;

}

以上两种方法都可以将字符串转换为二进制字符串,具体选择哪种方法取决于实际需求。如果频繁需要进行二进制转换,建议使用第一种方法;否则,第二种方法更为简洁易懂。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复