Мне нужно прочитать данные из разных типов файлов (wav, dll и т. Д.) Для алгоритма сжатия. Теперь алгоритм сортируется, однако у меня проблема при чтении из нетекстовых файлов. Что мне нужно сделать, так это прочитать ascii-представление каждого символа в файле, а затем применить мой алгоритм к тому, что я прочитал.чтение двоичного файла из любого типа файла в C#
Я использовал это для чтения (путь является строка, которая представляет собой путь к файлу, байты [а]):
if (path != "") {
abc = File.ReadAllBytes(path);
}
Это прекрасно работает для текстовых файлов (DOC, TXT,. m и т. д.), но если я попытаюсь сделать это для DLL-файла, я получаю следующую ошибку: значение было слишком большим или слишком маленьким для байта без знака. Я также попытался установить abc как строку и использовать File.ReadAllText, а затем преобразовать каждый символ в строку в значение байта, но я получаю ту же ошибку. Я знаю, что wav-файл, например, состоит из специальных символов, если вы открываете его в текстовом редакторе, и до сих пор я думаю, что значение ascii для некоторых из этих символов превышает 255, что может привести к ошибке. Однако я не знаю, действительно ли это так, и я немного зациклен на том, что я могу сделать, чтобы разобраться в моей проблеме. Если у кого-нибудь есть идеи, я бы это оценил. Было бы неплохо, если бы вы могли придерживаться используемого языка (C#). Спасибо!
Есть ли причина, что вы конкретно ориентация текста против двоичного ? В конце все двоично. Просто прочитайте байты и выполните сжатие в потоке байтов. Не обращайте внимания на то, что представляет собой фактический контент на данный момент (вы можете стать более умным с этим позже). –
Вы уверены, что это место, где выбрано исключение? File.ReadAllBytes просто считывает файл в массив байтов, независимо от типа файла. Возможно, дальше вы делаете некоторые операции над байтами, которые вызывают исключение. Из-за характера алгоритма, который у вас есть, он может появиться только при попытке сжатия нетекстовых файлов. –
Причина, по которой мне нужно это делать, это потому, что я должен придерживаться определенного алгоритма. Файл.ReadAllBytes выполняет чтение, но не может сохранить его в моей байтовой переменной [] abc. Мне нужно сохранить то, что читается как двоичное, а не что-то другое, и сейчас я не могу понять, как это сделать. Спасибо за быстрый ответ, хотя, это ценится. –