【问题标题】:convert 50 bit binary value to integer将 50 位二进制值转换为整数
【发布时间】:2016-10-16 02:00:53
【问题描述】:

我在 c++ 中有一个 1 和 0 的 50 位字符串(在外部 txt 文件中),需要在 systemC 中使用它(这里不关心)。 现在的问题是: 为了我的目的,需要先将字符串的 50 位转换为整数,然后再将整数转换为字符串。 但是当我将字符串转换为整数时,它并没有按预期反映结果。

 string a = "1000000001001000100000010100001001010100010000011";
 long int value;
 value = atoi(a.c_str());
 cout <<"converted value "<<value;

【问题讨论】:

  • 您阅读过atoi 的手册页吗?

标签: c++ string long-integer type-conversion


【解决方案1】:

你的朋友是strtoll

即改变

value = atoi(a.c_str());

long long int value = strtoll(a.c_str(), NULL, 2);

【讨论】:

  • 在使用您描述的方法转换上述字符串时,我得到一个十进制(int)2147483647,它远小于字符串值。
  • 我期待转换后的结果为 282097789216899。
  • 请看编辑 - long int 不够长 - code
  • Ed,你能不能再分享一下链接,这个显示404
  • 知道了,让我看看。
【解决方案2】:

从 C++11 开始,我们有 std::sto* 函数:

long long value = std::stoll(a, nullptr, 2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 2012-04-10
    • 1970-01-01
    • 2018-01-29
    • 2017-09-27
    • 2012-01-06
    • 2015-01-21
    • 2011-02-10
    相关资源
    最近更新 更多