c++ - 将超过 64 位的数组转换为 base-10 字符串

标签 c++ string binary-data

我正在尝试滚动我自己的任意大小的无符号整数类,但我无法找到一种方法来转换 std::vector<bool>我正在使用将这些位存储到以 10 为基数的字符串中。目前,我的算法是

unsigned long long sum = 0LL;
for(unsigned long long i=0; i<64LL && i<bit_list.size(); i++){
    if(bit_list[i]){
        sum |= 1LL << i;
    }
}
return std::to_string(sum);

但是,由于 std::to_string 的限制,这仅适用于 2^64 以下的数字和内置 unsigned long long .我将如何将许多位 unsigned int 转换为以 10 为底的转换的字符串表示形式?最好是,我希望该算法可以扩展到任意数量的位。

最佳答案

伪代码:

string s;
your_bitlist_class i;
if ( i > 0 )
{
    while ( i > 0 )
    {
        s.insert( 0, std::to_string( i % 10 ) );
        i /= 10;   
    }
}
else
{
    s = "0";
}

优化留给读者作为练习。

关于c++ - 将超过 64 位的数组转换为 base-10 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454772/

相关文章:

c++ - 为什么我更喜欢使用成员初始化列表?

c++ - Qt5 应用程序不运行

string - 将字符串文字类型转换为文字值

javascript - 如何删除 Javascript 字符串中的所有字符?

java - 从字符串中提取字符串

.net - 在不加载整个字段的情况下确定 blob 是否是图像?

c++ - clang 静态分析 - 检查与执行流程相关的可空变量初始化

c++ - 实例化 std::vector of boost::multi_array.. 为 cpp guru 融化大脑?

c - c中删除二叉树根节点的迭代方法

.net - 简明二进制对象表示(CBOR)的任何 .NET 实现?