Ну, ASCII только семибитный, с одной стороны. Однако я не верю, что ваш код на самом деле использует ASCII. Он вроде неявно использует ISO-8859-1.
Никогда обрабатывать текст как двоичный или наоборот. Это всегда приведет к проблемам.
Лучший способ преобразования двоичного текста в текст ASCII - использовать Base64:
string text = Convert.ToBase64String(frontImage);
byte[] data = Convert.FromBaseString(text);
Также обратите внимание, что если ваш код сработал , он все равно был бы крайне неэффективным - прочитайте StringBuilders и затем подумайте, что ваш код полуэквивалентен
Encoding.GetEncoding(28591).GetString(data);
Однако base64 - это определенно способ конвертировать текстовые и двоичные данные без потерь. Вам, конечно, нужно будет преобразовать его обратно в двоичный файл, чтобы снова просмотреть TIFF.
Обратите внимание, что вы не показали, как сохраняете или загружаете данные - у вас тоже могут быть проблемы. На самом деле, я подозреваю, что если бы вы смогли точно сохранить строку, вам , возможно, повезло, и вы сохранили данные, в зависимости от того, что именно вы делаете с этим ... но все равно используйте base64 .