c - 为什么二进制文件不是文本文件,所有文本文件都是二进制文件?

标签 c

将文件分类为二进制文件或文本文件的决定因素是什么?

例如:
考虑下面的 C 程序

  • 创建文件二进制 模式
  • 将两个整数写入文件“binary.txt”。

  • 注意:在运行程序之前确保 binary.txt 不存在。

    观察:

    文件创建“binary.txt”,内容为 TEXTFILE
    #include <stdio.h>
    
    int main()
    {
       int arr[2] = {1415071060,1162627398};
       FILE *fp = fopen("binary.txt", "wb");
    
       if(fp == NULL)
       {
           printf("Error opening file\n");
           exit(1);
       }
       fwrite(arr, sizeof(arr), 1, fp);
       fclose(fp);
       return 0;
    }
    

    但是只有创建者知道它是以二进制模式创建的,这应该称为二进制文件。

    任何打开文件“binary.txt”的人都认为它是 正文 文件。

    一般用户应该怎么称呼这个文件 - 二进制 正文 文件?

    最佳答案

    @JohnBollinger 在评论中总结得最好。

    text vs. binary is not a fundamental file characteristic on modern operating systems, but rather a differentiation between how files are interpreted.



    假设一个文件包含四个字节,字节的十六进制值如下:
    0x41 0x42 0x43 0x44
    

    如果在使用 ASCII 编码的系统中将这些字节解释为字符,您将得到字符 ABCD .

    如果您将这些字节视为 4 字节整数,您将获得值 0x41424344 (1094861636 十进制)在大端系统和 0x44434241 (十进制为 1145258561)在小端系统中。

    就计算机而言,它都是二进制的。至于他们的意思,这完全是一个解释的问题。

    关于c - 为什么二进制文件不是文本文件,所有文本文件都是二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51754913/

    相关文章:

    c - C 中的链接列表不起作用 Valgrind 错误

    c - Gstreamer、appsrc -> 解复用器? (尝试播放带有音频的VOB)

    c - 定位元素最后一次出现的递归函数

    c++ - 在 C++ 中模拟嵌套函数

    字符计数程序不输出任何内容

    c - 使用 strtok_s 使用嵌套循环标记两个字符串

    c - 水平翻转 1bpp .bmp 图像

    c - 从c中的 token 中获取一些字符串

    java - 在 C 中以\0 结尾的串联字符串

    c - 从整数(指针)生成指针(整数)而不进行强制转换