Чтобы прочитать этот файл, вы должны использовать BinaryReader. Чтобы прочитать int
, вы можете позвонить ReadInt32
. Для того, чтобы читать их строки, вам необходимо прочитать байт за байтом ReadByte
и сравнить с 0.
using (var fs = File.OpenRead(filename))
{
using (var reader = new BinaryReader(fs))
{
// reading happens here
}
}
частная строка ReadString (BinaryReader читателя) { байт Ь; StringBuilder sb = new StringBuilder(); while ((b = reader.ReadByte())! = 0) { sb.Append ((char) b); } return sb.ToString(); }
Я ошибся при преобразовании кода. Формат файла говорит о том, что длина строки будет 260 символов. Таким образом, вы должны прочитать 260 байт, а затем обрезать строку, как это:
private string ReadString(BinaryReader reader, int length = 260)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; ++i)
{
byte b = reader.ReadByte();
sb.Append((char)b);
}
return sb.ToString().Trim();
}
Чтобы прочитать заголовок, можно было бы написать:
string hldemo = ReadString(reader, 8);
и читать имя хоста, например, будет:
string host = ReadString(reader);
Это, скорее всего, точный дубликат PHP-кода, я думаю. См. Документ формата для других длин строк и посмотрите на их пример кода. Возможно, я что-то пропустил.
Что вы имеете в виду, когда говорите «не нужны пустые значения»? – Kian
Он выкинет исключение – user1522379