手动打印值不适合 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/