将二进制字符串转换为整数字符串c ++

时间:2012-08-21 14:04:38

标签: c++ string binary decimal

  

可能重复:
  Converting string of 1s and 0s into binary value

我想将二进制字符串转换为c ++中的整数字符串。 e.g:

"000000000010"变为"2"

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

我已经尝试使用stringstream执行此操作,使用标记std::stringstream::binary将二进制字符串插入其中,然后使用std::dec标记输出内容,但它不会使用{{1}}标记。工作

提前谢谢大家。

3 个答案:

答案 0 :(得分:9)

您可以从std::string构建std::bitset,并使用std::bitset::to_ulongstd::bitset::to_ullong获取整数。一定要照顾字节序,不是为你做的。

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

答案 1 :(得分:3)

你可以这样做:

  • 创建一个包含“0”
  • 的新输出字符串
  • 对于(反向)原始字符串的每个字符:
    • 将结果乘以2(逐位数,照顾进位)
    • 如果数字是'1',请在结果中添加1(如上所述)
  • 反转结果(使用std::reverse

答案 2 :(得分:0)

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

没关系。这不起作用。