为什么八进制转储输出整数变量的ascii代码而不是二进制代码?

时间:2016-06-15 15:53:47

标签: c linux file

这是C中用于向文件输入字符和整数变量的代码。

int main(void)
{
    FILE *fp;
    char file[20];
    int i = 40;

    printf("Enter filename: ");
    scanf("%s", file);

    fp = fopen(file, "wb");

    fprintf(fp, "%d", i);
    fprintf(fp, "%c%c", '4', '0');

    fclose(fp);

    return 0;
}

因此,假设文件名是文本,并调用od命令..

od -xc text

这是命令的输出

0000000    3034    3034
            4 0     4 0

为什么它为整数变量打印值40而不是十六进制代码0028的ASCII值?

1 个答案:

答案 0 :(得分:1)

webpack-dev-server webpack.dev.js将所有输出格式化为文本 - fprintf将字符值fprintf( fp, "%d", 42 )'4'写入输出流,与{{{ 1}}和'2'

如果要将整数的二进制表示写入输出流,则需要使用fprintf( fp, "%c%c", '4', '2' )