Я хочу прочитать любой файл (.bin, .txt, .jpg, .zip, .mp3 и т. Д.) Byte by byte (или побитно) и отобразить его на консоли (в формате, таком как 00100011). На сайте есть несколько вопросов, но в основном это файлы .bin. Не имеет значения, с каким файлом я работаю. Например, когда вы открываете файл .png в текстовом редакторе, вы видите странные символы на экране, такие как «ΣP®pT ™ 5à *», и я предполагаю, что это каждые 8 бит файла, превращенного в буквы ASCII и отображаемые на редактор (пожалуйста, поправьте меня, если я ошибаюсь).Чтение любого файла (не. Бинового файла) byte by byte
Я пишу эту программу в C++ и до сих пор я пытался
fstream file("foo.txt", ios_base::binary);
прочитать файл в двоичном режиме и получить 8 битые куски, но это работает только для файлов .txt и просто отображает символы в текстовом файле, как обычно. Однако даже не работает или не открывает другие форматы файлов, например .png.
Могу ли я получить некоторые подсказки о том, как я могу это достичь, и, пожалуйста, исправьте меня, если я дам неверную информацию.
Расширение файла не имеет никакого отношения к тому, как вы читаете файл! ** Все ** файлы - это просто байты. Какая у вас проблема, когда вы пытаетесь использовать свой код в PNG-файле? – immibis
Я поместил байты в символ, и когда я хочу его вывести, он не отображается на экране, и я не хочу, чтобы он преобразовывался в символ. Например, текстовый файл с буквой A на нем должен давать 0x41 -> двоичный код, конечно – Orkun
Чтение блока байтов часто более эффективно, чем чтение байта по байту. Для каждого вызова функции есть накладные расходы. Поэтому чтение 1024 байта с одним вызовом функции более эффективно, чем 1024 вызова функций для чтения одного байта. –