Может быть полезно объяснить, как файлы работают на самом низком уровне:
Файл представляет собой поток байтов нулевой или более длины. Байт 8 бит. Поскольку существует 256 комбинаций из 8 битов, это означает, что байт - это любое число от 0 до 255. Таким образом, каждый файл на самом низком уровне представляет собой большой массив чисел в диапазоне от 0 до 255.
Это полностью зависит от программ и пользователей, чтобы решить, что цифры "означают". Если мы хотим сохранить текст, то, вероятно, будет хорошей идеей использовать числа в качестве кода, где каждому номеру присваивается буква. Это то, что делают ASCII и Unicode. Если мы хотим отобразить текст, то, вероятно, будет хорошей идеей создать устройство или написать программу, которая может взять эти числа и отобразить растровое изображение, похожее на соответствующий код ASCII / Unicode. Это то, что делают терминалы и эмуляторы терминалов.
Конечно, для графики мы, вероятно, хотим, чтобы числа представляли пиксели и их цвета. Затем нам понадобится программа, которая просматривает файл, читает все байты и соответственно отображает изображение. Эмулятор терминала ожидает, что байты будут номерами ASCII / Unicode и будет вести себя по-разному, для одного и того же фрагмента байтов (или файла).