Немного расшифровав ответ Роджера с некоторым кодом.
Строка всегда кодируется в каком-либо формате, и для ее чтения необходимо знать эту кодировку (особенно при использовании двоичного читателя).Во многих случаях это простой ASCII, и вы можете использовать Encoding.ASCII.GetString для его анализа, если вы получите неожиданные результаты (странные символы и т. Д.), А затем попробуйте другую кодировку.
Для анализа изображения вам необходимо использоватьпарсер изображений.NET имеет несколько как часть их пространств имен GUI.В приведенном ниже примере я использую один из System.Drawing (формы Windows), но аналогичные существуют в WPF, и существует множество сторонних библиотек.
using (var reader = new BinaryReader(File.Open(someFile, FileMode.Open))
{
// assuming your string is in plain ASCII encoding:
var myString = System.Text.Encoding.ASCII.GetString(reader.ReadBytes(30));
// The rest of the bytes is image data, use an image library to process it
var myImage = System.Drawing.Image.FromStream(reader.BaseStream);
}
СейчасMSDN предостерегает о том, что следует использовать BaseStream вместе с BinaryReader, но я считаю, что в приведенном выше случае вы должны быть в безопасности, поскольку вы не используете поток после изображения.Но следите за проблемами. Если произойдет сбой, вы всегда можете прочитать байты в новый byte[]
и создать новый MemoryStream из этих байтов.
РЕДАКТИРОВАТЬ:
Вы указали в своем комментарии, что ваша строка EBCDIC , что, к сожалению, означает, что вы не можете использовать любую из встроенных кодировок для ее декодирования.Быстрый поиск в Google показал сообщение Джона Скита о классе кодирования EBCDIC .NET, которое может помочь вам начать работу.Это по существу даст вам ebcdicEncoding.GetString(...);