下面的代码将biginteger打印成十进制格式的文件,如何将代码转换为打印二进制数据和十六进制数据而不是文件?
static void
print_pos( FILE* f, bigint bi )
{
if ( bi_compare( bi_copy( bi ), bi_10 ) >= 0 )
print_pos( f, bi_int_divide( bi_copy( bi ), 10 ) );
putc( bi_int_mod( bi, 10 ) + '0', f );
}
bi_10只是一种bigint,如何修改上面的代码来打印十六进制/二进制数据而不是十进制数据?
答案 0 :(得分:1)
要在基数N中打印,您需要进行三项更改:
这是使用普通整数的样子。我会让你做适当的改变来使用你的big int库:
static void
print_pos( FILE* f, int n, int base )
{
if (n < 0)
{
n *= -1;
putc( '-', f );
}
if (n >= base)
print_pos( f, n / base, base );
int d = n % base;
const char *digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
putc( digits[d], f );
}
最后几条评论。
char c = ...
行。