Я пишу немного кода C, в котором я представлен со следующими вещами:указатели указать местоположение собственно памяти
typedef uint8_t BYTE;
typedef int8_t SBYTE;
typedef uint16_t WORD;
typedef uint32_t DWORD;
typedef uint64_t QWORD;
У меня есть функция, имеющая определение, как QWORD exp_d(const DWORD *in)
.
И у меня есть указатель на QWORD как QWORD* input
. Будучи QWORD, он имеет 64 бита. Теперь я хочу отправить наименее значимые 32 бита input
для функции exp_d
. Что я делаю,
QWORD expansion=exp_d(((DWORD*)input)+1);
Я думаю, input
является QWORD*
, поэтому первый типажи его к DWORD*
, а затем incrimenting его на 1 (чтобы добраться до следующего DWORD
, то есть наименее значащие 32 бита QWORD
). Однако, когда я передаю такое значение exp_d
, я получаю наиболее значимые 32 бита input
, а не наименее значимые 32 бита, как ожидалось.
Куда я иду не так?
http://en.wikipedia.org/wiki/Endianness –