Шестнадцатеричная побитовая операция в C++

Используя потоковую передачу файлов в C++, я прочитал строку из двоичного файла в буфер (4 байта). Я знаю, что буфер содержит "89abcdef". Буфер таков, что:

buffer[0] = 89
buffer[1] = ab
buffer[2] = cd
buffer[3] = ef

Теперь я хочу восстановить эти числа в одно шестнадцатеричное число 0x89abcdef. Однако это не так просто, как я думал. Я попробовал следующий код:

int num = 0;
num |= buffer[0];
num <<= 24;
cout << num << endl;

в этот момент numотображается как

ea000000

. Когда я попробовал тот же алгоритм для второго элемента буфера:

num = 0;
num |= buffer[1];
num <<= 16;
cout << num << endl;

вывод:

ffcd0000

ffперед cdмне крайне неудобно складывать их все вместе (я планировал сделать что-то вроде 00cd0000, и добавить в первый номер).

Может ли кто-нибудь помочь мне восстановить шестнадцатеричный номер 0x89abcdef? Спасибо.

0
задан return 0 14 June 2012 в 18:50
поделиться