c++ - 手动打印 N 字节整数

标签 c++ printing integer arbitrary-precision

手动打印值不适合 long long 的 N 二进制数字整数的可扩展算法是什么? .我知道printf和 friend ,以及<iostream> (最有可能搭载在 <cstdio> 上的内置标准类型,但我想对由 N 字节组成的整数执行此操作。

我考虑过这个问题并用谷歌搜索了一下,但它总是归结为使用预先存在的 bigint 库,如 GMP(我一点也不熟悉的代码库)或“使用 printf”或最有用的“this很难”。

整数基本上是:

template<size_t N>
class Integer{
...
private:
    int8_t first;
    uint8_t rest[N-1];
}

所以重新解释 Integer<4>的字节会给你一个 int32_t .我想将其扩展到 N>8。目前,效率并不是我真正关心的问题。字节顺序也不是(这是针对 x86 的)。

最佳答案

第 1 步:定义一个包含字符串格式的 2 的幂的查找表:

const char * const powers_of_two[] = {"1", "2", "4", "8", "16", "32", "64", ...};

第 2 步:编写一个将两个字符串格式的数字相加的函数。

第 3 步:遍历数字中的位并添加与 1 位对应的所有字符串。

第四步:打印结果。

我自己使用这种方法来打印非常大的 float ,它对我来说效果很好。

关于c++ - 手动打印 N 字节整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11036198/

相关文章:

ruby - 使用默认值将 Ruby 字符串转换为整数

c++ - 从函数返回后删除动态数组

c++ - 有没有像打印机标记语言这样的东西

list - 转换 [整数] -> 整数

html - 打印预览隐藏表格边框

c# - 无法更改打印机的 DEVMODE

php - is_int() 无法在 PHP 中检查 $_GET?

c++ - iPhone OpenGL ES 不正确的 alpha 混合

c++ - 在 HtmlHelp 调用中使用 HelpId

c++ - C++ 中的函数范围异常处理——这是一种糟糕的风格吗?