【发布时间】:2012-06-17 16:03:38
【问题描述】:
什么是可扩展的算法,可以手动打印其值不适合long long 的 N 位二进制整数。我知道printf 和朋友们,还有<iostream> (很可能是<cstdio> 的背驮式内置标准类型,但我想对由N 个字节组成的整数执行此操作。
我已经考虑过这一点并在 Google 上搜索了一下,但它总是归结为使用预先存在的 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 的)。
【问题讨论】:
-
我认为您需要以十进制打印数字?
-
@aix 是的,十进制是个好主意。
-
我的建议是无论如何都要使用 bigint 库;这些库经过调试和验证。您将如何发现自己编码中的缺陷?这不像您要使用笔和纸或 Excel 来验证结果。
-
@tomdemuyt,例如在 Python 中生成大数的十进制和十六进制表示的测试用例是微不足道的。
标签: c++ printing integer arbitrary-precision