将 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 位二进制值转换为整数的主要内容,如果未能解决你的问题,请参考以下文章

尝试用二进制值填充数组并确定最低有效位

Swift将十六进制字符串或字符转换为整数

如何转换从文本文件中读取的整数并存储为具有16位整数的二进制文件?

POJ44:正整数的任意进制转换

将int转换为float,PHP中的两个十进制值[重复]

将整数转换为二进制,然后在 python 中进行左位移