1

可能重复:
将 1 和 0 的字符串转换为二进制值

我想在 C++ 中将二进制字符串转换为整数字符串。例如:

"000000000010"变成"2"

我有以下约束:我不能将此字符串转换为整数类型,然后再将其转换为字符串,因为该二进制字符串可能非常大!

我已经尝试用 来做,用stringstream标志将二进制字符串插入它,std::stringstream::binary然后使用std::dec标志输出内容,但它不起作用

谢谢大家。

4

3 回答 3

11

您可以std::bitset从 a构造 a std::string,并使用std::bitset::to_ulongorstd::bitset::to_ullong来获取整数。一定要注意字节顺序,它不是为你做的。

如果您需要整数中的字符串,请使用std::to_string.

于 2012-08-21T14:08:09.833 回答
3

你可以这样做:

  • 创建一个新的输出字符串,包含“0”
  • 对于(反转的)原始字符串的每个字符:
    • 将结果乘以 2(逐位计算,注意进位)
    • 如果数字是 a '1',则在结果中加 1(如上)
  • 反转结果(使用std::reverse
于 2012-08-21T14:14:52.023 回答
0

在我的脑海中,我将从累加值 0 开始,从右到左读取二进制字符串。对于每个位,将累加值乘以 2,如果该位为 1,则将累加值加 1。如果累加值大于 9,则将其除以 10,并将余数作为字符写出。这将以相反的顺序给出十进制字符。

没关系。这行不通。

于 2012-08-21T14:15:50.257 回答