Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
6 / 3 / 3
Регистрация: 17.10.2022
Сообщений: 54
1
.NET 6

Как прочитать файл в виде двоичного кода или Hex?

17.10.2022, 01:57. Показов 1078. Ответов 10

Author24 — интернет-сервис помощи студентам
Мне нужно сделать программу, что бы могла открыть любой файл, любого расширения (хоть txt и даже exe), и прочитать его содержимое в виде двоичного кода или Hex. Основная задача в том, что бы потом используя этот полученный код, можно было записать его в новосозданный файл с этим же расширением, тем самым создав копию первого, причём полностью рабочую.

1. Я пробовал это:
C#
1
2
3
4
5
6
7
             FileStream FS = new FileStream("FurMark.exe", FileMode.Open);
             StreamReader ms = new StreamReader(FS, Encoding.ASCII);
             StreamWriter writer = new StreamWriter("FurMark2.txt", true, Encoding.ASCII);
             writer.Write(ms.ReadToEnd());
             writer.Close();
             System.IO.File.Move("FurMark2.txt", "FurMark2.exe");
             ms.Close();
Но оно читало содержимое файла в неизвестной кодировке (были какие то вопросики и значки юникода), соответственно оно так же записалось и в файл, он не заработал, хотя их размеры были одинаковые.

2. Так же пробовал это:
C#
1
2
3
4
5
6
            BinaryReader br = new BinaryReader(File.OpenRead("FurMark.exe"));
            Console.Write(br.ReadString());
            BinaryWriter bw = new BinaryWriter(File.Open("FurMark.exe", FileMode.OpenOrCreate));
            bw.Write(br.ReadString());
            br.Close();
            bw.Close();
Данная вариация просто считала размер файла в битах.

Это всё что я смог откопать в интернете, прошу вас помочь мне.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2022, 01:57
Ответы с готовыми решениями:

Файл: Сохранить объект класса в файл в виде двоичного кода и восстановить, с выводом в консоль
Сохранить объект класса в файл в виде двоичного кода и восстановить, с выводом в консоль.

QFile прочитать файл как HEX
Доброго времени суток! Проблема такая, хочу открыть файл в шестнадцатеричном представлении, как...

Как прочитать корневую директорию, как файл в hex-ввиде?
Файл можно открыть так: #include <iostream> #include <cstdio> int main() { FILE *...

Исходное число задать в виде строки символов в коде ASCII, результат сформировать в виде двоичного кода в формате слова
Исходное число задать в виде строки символов в коде ASCII, результат сформировать в виде двоичного...

Как прочитать файл в шестнадцатеричном виде
Здравствуйте. Пытаюсь прочитать байты в шестнадцатеричном виде из файла. Имеется такой код: ...

10
Эксперт .NET
6507 / 4084 / 1605
Регистрация: 09.05.2015
Сообщений: 9,548
17.10.2022, 04:10 2
Цитата Сообщение от MrSpy Посмотреть сообщение
Основная задача в том, что бы потом используя этот полученный код, можно было записать его в новосозданный файл с этим же расширением, тем самым создав копию первого, причём полностью рабочую.
C#
1
2
3
            using (var fsSrc = new FileStream("file1", FileMode.Open))
            using (var fsDst = new FileStream("file2", FileMode.Create))
                fsSrc.CopyTo(fsDst);
0
6 / 3 / 3
Регистрация: 17.10.2022
Сообщений: 54
17.10.2022, 11:55  [ТС] 3
Мне нужно именно так, как я описал выше. Обычное копирование мне не подходит
0
967 / 449 / 231
Регистрация: 27.06.2014
Сообщений: 984
17.10.2022, 12:34 4
Цитата Сообщение от MrSpy Посмотреть сообщение
1. Я пробовал это:
При чтении бинарного файла как текстового, все кода, не походящие как символ, замещаются знаками вопроса (или ещё каким-нибудь символом).
Цитата Сообщение от MrSpy Посмотреть сообщение
2. Так же пробовал это:
Здесь такая-же ситуация. к тому-же для бинарных данных ReadString():
Считывает строку из текущего потока. Строка предваряется значением длины строки, которое закодировано как целое число блоками по семь битов.
Что так-же изменяет длину исходных данных...
Бинарные данные и надо считывать/записывать как байты.
0
6 / 3 / 3
Регистрация: 17.10.2022
Сообщений: 54
17.10.2022, 13:27  [ТС] 5
то-есть моего решения в C# не сущеструет?
0
967 / 449 / 231
Регистрация: 27.06.2014
Сообщений: 984
17.10.2022, 13:40 6
MrSpy, MrSpy, а зачем исполняемый файл считывать как текстовый. Это невозможно (почти)
0
Модератор
Эксперт .NET
15784 / 10942 / 2842
Регистрация: 21.04.2018
Сообщений: 32,095
Записей в блоге: 2
17.10.2022, 13:49 7
Цитата Сообщение от MrSpy Посмотреть сообщение
Мне нужно именно так, как я описал выше. Обычное копирование мне не подходит
Вы может более детально объяснить чем отличается ваше "именно так" от "обычного копирования"?
Обычное копирование читает из одного потока двоичную информацию и записывает её в другой поток Метод Stream.CopyTo(...).
А вам что надо?
0
6 / 3 / 3
Регистрация: 17.10.2022
Сообщений: 54
17.10.2022, 13:54  [ТС] 8
Мне нужно сделать архиватор файлов, и да я знаю, что есть специальная библиотека для этого, мне нужно именно свой со своей базой данных сжатия файла
0
967 / 449 / 231
Регистрация: 27.06.2014
Сообщений: 984
17.10.2022, 14:00 9
MrSpy, в таком случае нужно BinaryReader.Read(Byte[], Int32, Int32):
Считывает указанное количество байтов из потока, начиная с заданной точки в массиве байтов.
либо BinaryReader.ReadByte():
Считывает из текущего потока следующий байт и перемещает текущую позицию в потоке на один байт вперед.
Взято отсюда.
0
Модератор
Эксперт .NET
15784 / 10942 / 2842
Регистрация: 21.04.2018
Сообщений: 32,095
Записей в блоге: 2
17.10.2022, 14:30 10
MrSpy, по интерфейсу Форума:
 Комментарий модератора 
При обращении к другому пользователю указывайте его ник в тегах [NICK][/NICK] или цитируйте часть сообщения на которое отвечаете.
В противном случае ему не придёт уведомление о вашем обращении и вы можете не дождаться ответа на своё сообщение.

Для вставки ника: введите ник, выделите его и нажмите кнопку "Динамик" на панели редактора сообщений.
Или кликните по нику автора сообщения в панели слева от текста его сообщения.

Для вставки цитаты: выделите нужную цитату, должна появиться всплывающая кнопка "Цитировать", нажмите её.
0
Модератор
Эксперт .NET
15784 / 10942 / 2842
Регистрация: 21.04.2018
Сообщений: 32,095
Записей в блоге: 2
17.10.2022, 16:08 11
Цитата Сообщение от MrSpy Посмотреть сообщение
Мне нужно сделать архиватор файлов
Тогда же вам нужно прочитать блок, обработать его, сохранить, прочитать следующий.
Чтение и сохранение двоичной информации производится байтовыми блоками (массивами) методами: Stream.Read(...) и Stream.Write(...).
0
17.10.2022, 16:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2022, 16:08
Помогаю со студенческими работами здесь

IP пакет в виде hex кода
Всем здравствуйте кто заглянул на эту тему. Вот задачка не могу даже приблезительно найти по этой...

Работа с файлом в виде двоичного кода
Здравствуйте. Продолжаю работу над внедрением в картинку TIFF текстового файла. Собственно говоря,...

Как создать файл по двоичному коду и извлечение двоичного кода файла
Вот в чем вопрос: Нужно, чтобы программа из файла text.txt (он с программой рядом лежит) взяла...

извлечь биты и вывести в виде двоичного кода число на языке С
Помогите пожалуйста написать программу. суть которой заключается в том,чтобы извлечь биты и вывести...

извлечь биты и вывести в виде двоичного кода число на языке С
Помогите пожалуйста написать программу. суть которой заключается в том,чтобы извлечь биты и вывести...

Файл: Запишите в другой файл полные коды заданных цветов в виде целых чисел в HEX
В каждой строке файла записано три числа, каждое из которых находится в интервале . Эти числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru