Как получать байты к офсетам?
Я занимаюсь созданием модификаций для игры и столкнулся с проблемой, сделал дамп и получил офсеты, но не могу понять как получить Байты (Bytes), можете помочь и рассказать как получать их?
Я пытался разобраться, но все таки никак не смог, надеюсь на помощь
Ответы (1 шт):
ну например есть массив
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);