Задать вопрос
@AlexsandrLomaev

Как преобразовать большое int в byte?

Есть код:
public void WriteBytes()
        {
            const int Offset = 0x4AC;
            var adress = 0x018D7270;
            var bytesSize = 1;
            byte[] bytes = { Offset };
            var w = new IntPtr();
            var hendl = OpenProcess(0x001F0FFF, false, ProcessID);
            WriteProcessMemory(hendl, (IntPtr)adress, bytes, (int)bytesSize, out w);
            CloseHandle(hendl);
        }

И вот в этой строчке byte[] bytes = { Offset }; компилятор ругается - не удается преобразовать константы "1196" в байты.

Как мне это исправить?
  • Вопрос задан
  • 435 просмотров
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • XYZ School
    Разработка игр на Unity
    5 месяцев
    Далее
Решения вопроса 1
@cicatrix
было бы большой ошибкой думать
int value = 1196;
var bytes = BitConverter.GetBytes(value);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Или
var offset = 0x4AC;
Span<byte> bytes = stackalloc byte[sizeof(int)];
BinaryPrimitives.WriteInt32LittleEndian(bytes, offset);
// Дальше можно передать указатель на bytes в WriteProcessMemory. Даже не обязательно преобразовывать в массив


BinaryPrimitives.WriteInt32
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы