首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印文件中的二进制(字节)值

打印文件中的二进制(字节)值
EN

Stack Overflow用户
提问于 2010-01-07 15:16:08
回答 1查看 655关注 0票数 0

下面的代码将大整数打印到十进制格式的文件中,如何将代码转换为打印二进制数据和十六进制数据到文件中?

代码语言:javascript
复制
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类型,我如何修改上面的代码来打印十六进制/二进制数据而不是十进制数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-07 15:21:49

要以N为基数进行打印,您需要进行三个更改:

  1. 不是除以第二行中的mod 10,而是除以N
  2. 而不是第三行中的mod 10,执行module
  3. ,您需要将第2行中的模块转换为适当的字符。如果基数大于10,则需要执行if/else

下面是使用纯整数时的结果。我将允许您进行适当的更改以使用您的大型int库:

代码语言:javascript
复制
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 );
}

最后几条评论。

你的原始代码忘记处理负的numbers.

  • This函数了,,
  1. ,你的原始代码,以36为底。如果你想要更大的基数,你需要扩展char c = ...系列。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2018827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档