Это немного странная проблема, которую я имею здесь. Я работаю с C# 6 на платформе .NET по алгоритму двоичного сжатия. Несколько ступеней сжатия работают отлично, даже намного лучше, чем ожидалось! Однако преобразование неоптимизированного двоичного файла обратно в файл оказывается немного больнее, чем я ожидал.Могу ли я записать двоичный файл, хранящийся в виде строки, в двоичный файл непосредственно на C#?
Дело
Binary считывается из произвольного файла, и передается вместе в программе в виде строки. Несколько строк оптимизации работают над строкой, преобразуя ее в промежуточное представление, которое записывается как сжатый объект. Затем деоптимизация превращает промежуточную форму обратно в чистую двоичную, готовую к записи.
Кодекс
Двоичный вход
BinaryString = ""; Filename = filename;
StringBuilder sb = new StringBuilder();
foreach(byte b in File.ReadAllBytes(filename)) {
{
sb.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}
BinaryString = sb.ToString();
Это, как я принимать входной сигнал. Он вернет буквальную двоичную строку в виде 11001010110001
Преобразование из его промежуточной формы возвращает точно такую же строку.
Binary
Выход В настоящее время я пытаюсь напрямую записать двоичный файл в байтах, как таковой:
List<Byte> bytes = new List<byte>();
foreach(char c in binary)
bytes.Add(Convert.ToByte(c));
File.WriteAllBytes(filename, bytes.ToArray());
Проблема
Метод, который я пытаюсь прямо сейчас двоичный вывод просто записывает двоичный файл в текстовый файл, а не записывает двоичный объект в файловую систему.
Мы сжимаем картинки, исполняемые файлы, текст, объекты git и т. Д. Поэтому совершенно очевидно, что это так написано.
Существует ли метод в C# /. NET, который легко позволит мне перевести двоичный файл обратно в файл, или это более сложная проблема, чем я думаю?
Почему в мире вы бы превратили двоичные данные в строку в первую очередь вместо того, чтобы просто обрабатывать данные как байты? – itsme86
^^ см. Комментарий выше –
Двоичные данные обычно имеют формат, связанный с данными. Вы просто не можете прочитать о записи данных. Например, если вы пишете 32-битное целое число, два 8-битных байта. Когда вы читаете, вы должны читать данные в тех же размерах. Поэтому, когда вы пишете двоичный файл, вы должны прочитать его точно так же, как это было написано. – jdweng