Int16 из справки буфера (BE)

Хорошо, так вот моя проблема. Я прочитал два байта из файла.

Допустим, эти байты являются «FD 37» — это должно быть: 64823

Я читаю с прямым порядком байтов, поэтому я попытался перевернуть массив с прямым порядком байтов, а затем попробовал битовые движения. Мне нужна помощь, потому что я не могу получить это. Любая помощь приветствуется.

(да, я знаю, что это гетто наоборот)

static void Reverse(BYTE* &buffer, long length)
{
BYTE *obuff = new BYTE[length];
for(int i=0; i<length; i++)
obuff[length-i-1] = buffer[i];
obuff[length] = '\0';
buffer = obuff;
}

typedef signed short int Int16;

Int16 ReadInt16()
{
Int16 val;
BYTE* bytes = new BYTE[2];
Read(bytes, 0, 2); //just stores 2 bytes into bytes and advances buffer 2 positions.
Array::Reverse(bytes,2);
val = bytes[0] | (bytes[1] << 8);
return val;
}

Мой результат с использованием этого метода -753

есть идеи?

0

Решение

Если вы хотите беззнаковый номер, вы должны использовать беззнаковый тип, а не беззнаковый.

3

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

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

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