как правильно привести uint32_t к неподписанному

Я пытаюсь исправить код C ++ с помощью дезинфицирующего устройства.
Код говорит:

unsigned result = *(uint32_t*)data;

И дезинфицирующее средство дает:

runtime error: load of misaligned address 0x6280033f410a for type 'uint32_t', which requires 4 byte alignment

Как мне это исправить?

-4

Решение

load of misaligned address 0x6280033f410a for type 'uint32_t' ...

Как мне это исправить?

Вам необходимо создать выровненный объект (например, переменную) и скопировать содержимое с неверно выровненного адреса:

std::uint32_t u32;
std::memcpy(&u32, data, sizeof u32);

Это предполагает, что вы собираетесь читать sizeof u32 байты с этого адреса и что эти байты упорядочены в родном порядке байтов.

как правильно привести uint32_t к неподписанному

Неявное преобразование должно быть просто отлично:

unsigned result = u32;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]