将字符串转换为二进制的最快方法是什么?

20

我想使用字符串类将一个字符串逐个字符地转换为二进制。有什么快速方法可以实现这一点吗?需要使用循环吗?还是有一些函数可以直接帮我完成转换?转换结果应该是1和0的二进制。

所谓字符串即为:

#include <string>
using namespace std;
int main(){
  myString = "Hello World";
}

1
请问您需要的是这个内容吗:https://dev59.com/IXRB5IYBdhLWcg3wz6UK ? - Serdalis
@Serdalis,我真的不知道那里发生了什么。 - Derp
你希望看到“Hello, world”的输出是什么?是11*8个01字符,代表字符串字符的二进制ASCII码,还是其他什么? - Sergey Kalinichenko
那你尝试过什么?你的代码甚至都无法编译... - Alexei Levenkov
3个回答

45

可以使用 std::bitset

#include <string>
#include <bitset>
#include <iostream>
using namespace std;
int main(){
  string myString = "Hello World";
  for (std::size_t i = 0; i < myString.size(); ++i)
  {
      cout << bitset<8>(myString.c_str()[i]) << endl;
  }
}

输出:

01001000
01100101
01101100
01101100
01101111
00100000
01010111
01101111
01110010
01101100
01100100

18
只需使用bitset<8>(myString[i]) - Jesse Good
2
所以 bitset<8> 会给你基于256的结果,如果你想要基于255或257的结果,只需加上-1和+1即可。 - pyCthon
如果我们想要对输出进行求和,使得如果在 MSB 侧的求和末尾存在溢出位(0 或 1),那么它应该再次添加到求和的最终答案中。我们该如何做到这一点? - user899714
请添加一些上下文来解释您的答案如何解决问题,而不是仅发布代码答案。 - veeloth
通过解释您的答案如何解决问题,而不仅仅是发布一个代码答案,来增加一些背景信息。 - veeloth

2
尝试使用这个方法。例子:
#include <iostream>
#include <bitset>
using namespace std;

string TextToBinaryString(string words) {
    string binaryString = "";
    for (char& _char : words) {
        binaryString +=bitset<8>(_char).to_string();
    }
    return binaryString;
}
int main()
{
    string testText = "Hello World";
    cout << "Test text: " << testText << "!\n";
    cout << "Convert text to binary: " << TextToBinaryString(testText) << "!\n";

    return 0;
}

结果代码:
Test text: Hello World!                                                                                                                                                                                 
Convert text to binary: 0100100001100101011011000110110001101111001000000101011101101111011100100110110001100100!

0

char * buf = data.c_str; //buf是二进制


6
解决问题的方法不仅仅是提供代码,还要解释代码如何解决问题。因此,在回答问题时,应该添加一些上下文来解释你的答案是如何解决问题的。这有助于读者更好地理解和学习解决问题的方法。 - Arun Vinoth-Precog Tech - MVP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接