Как получать байты к офсетам?

Я занимаюсь созданием модификаций для игры и столкнулся с проблемой, сделал дамп и получил офсеты, но не могу понять как получить Байты (Bytes), можете помочь и рассказать как получать их?

Я пытался разобраться, но все таки никак не смог, надеюсь на помощь


Ответы (1 шт):

Автор решения: aepot

ну например есть массив

byte[] bytes = File.ReadAllBytes("путь к файлу");

Тогда чтобы взять секцию с 10-го по 20-й байт, то нужно сделать так

Span<byte> span = bytes; // или var span = bytes.AsSpan();
Span<byte> fragment = span[10..20];

То есть преобразовать в Span чтобы получая другие спаны фрагментами данные не копировались.

Надо от начала до 10 байта, то так

Span<byte> fragment = span[..10];

Если от 20-го и до конца, то так

Span<byte> fragment = span[20..];

Все изменения байт в таких спанах будут влиять на изначальный массив byte[].

Чтобы изменить байт по индекусу в массиве или спане, нужно сделать так

fragment[3] = 42;

Можно еще вести отсчёт индексов с конца, а не с начала, подробнее читайте в документации.

Для преобразований последовательности байт в многобайтовые числа и наоборот, например int или long, используйте BinaryPrimitives.

Затем можно просто сохранить массив в файл

File.WriteAllBytes("путь к файлу", bytes);
→ Ссылка