将 50 位二进制值转换为整数
Posted
技术标签:
【中文标题】将 50 位二进制值转换为整数【英文标题】:convert 50 bit binary value to integer 【发布时间】: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
的手册页吗?
【参考方案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);
【讨论】:
以上是关于将 50 位二进制值转换为整数的主要内容,如果未能解决你的问题,请参考以下文章