elfenliedtopfan5 Ответов: 2

Как я могу прочитать файл такого формата C#


хорошо при проверке файла я пытаюсь получить из него имена постоянно терпит неудачу потому что он не доходит до части имени но отладка выплевывает это

"r\0\0\0�\0\0\0\0+\u0001\u0001\0\0\0\0\0\u0002 \b\u0004\0\0\0\0\u0001\0\u0001\0\0\0\0\0@\0\0\u0004\0\0(e�\u0012\b\f\0\0\0\u0002\0\u0001\0l\0\0\0@\0\0\0X\0\0\0�\0\0\0\v\u0002\0\0�\0\0\0�\0\0\0\u0001\u0005\0\0�\0\0\0�\0\0\0\0\0�?\0\0�?\0\0�?\0\0�?tools\0lightgrid_volume\0lightgrid_volume\0colorMap\0normalMap\0$identitynormalmap\0colorTint\0"


и я не уверен как я читаю этот файл я изо всех сил стараюсь получить код который говорит lightgrid_volume и другие вещи в этой части я сделал регулярное выражение часть

public void findmaterialname()
{
    Regex regex = new Regex(@"(.+)(tools)(\\[0-9a-z_]+\\)([0-9A-Z_a-z]+)", RegexOptions.Singleline);
    // (.+)(tools)(\\[0-9a-z_]+\\)([0-9A-Z_a-z]+) selects all stuff to tools then is meant to get the other lines but refues
    // ([a-z_0-9]+_c\s)(colorMap) ment to select the path and then link with colour map
    // output should be 0lightgrid_volume\0colorMap  use grop 3 for this colour map refence
    using (StreamReader reader = new StreamReader(@"F:\world_at_war_with_nuketown\Call of Duty - World at War\raw\materials\" + mattofind))
    {
        string line;
        while ((line = reader.ReadToEnd())!= "")
        {
            // Try to match each line against the Regex.
            Match match = regex.Match(line);
            if (match.Success)
            {
                // Write original line and the value.
                string v = match.Groups[4].Value;
                MessageBox.Show(v);
            }
        }
    }
}


но в настоящее время у меня есть проблемы


https://i.imgur.com/CAx4fhs.png[^]

Что я уже пробовал:

regex и tryied с помощью binaryreader, но regex и binaryreader не хотят играть со мной в мяч.

Dave Kreskowiak

Регулярное выражение не поможет вам в этом случае. Регулярное выражение работает со строками и текстом, а не с двоичными данными.

2 Ответов

Рейтинг:
2

Richard MacCutchan

Вы должны начать с выяснения того, что такое контент и как он форматируется. Откуда берется файл или какое приложение его создает? Как только вы получите эту информацию, вы сможете понять, как ее читать. Часто двоичный файл форматируется в виде записей фиксированной или переменной длины. Если фиксированная длина, то легко просто прочитать каждый блок данных. Если переменная, то каждой записи обычно предшествует значение, которое дает длину записи. Это может быть байт, короткий, int или длинный, но только создатель файла будет знать, какой именно.


Рейтинг:
0

Patrice T

Цитата:
Как я могу прочитать файл такого формата C#

С болью этот файл является "двоичным", это означает, что этот файл предназначен для чтения компьютером, а не людьми.
Прежде всего вам нужно понять, что отладчик изменил файл, чтобы сделать его более удобочитаемым для человека, поэтому попытка соответствовать тому, что отображает отладчик, никогда не будет работать.

Знание того, что находится в файле, также может помочь расшифровать.

Первый шаг-использовать редактор программиста с шестнадцатеричным режимом, он будет отображать точное содержание файла, печатаемые символы или нет.
Блокнот++ Главная Страница[^]
личные[^]

[Обновление]
Поскольку имя файла из картинки выглядит так, как будто оно взято из игры, вам нужно знать, что такие файлы обычно намеренно кодируются, чтобы их было трудно расшифровать, чтобы избежать несанкционированного закаливания.


elfenliedtopfan5

https://i.imgur.com/CAx4fhs.png это файл в ultra edit

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

elfenliedtopfan5

теперь обновили извините обычно не спрашивайте на формах не знал как вы могли бы это сделать

Patrice T

Без проблем.
Я догадался, что вы новичок на этом форуме.