подписан коротким байтом в c ++
Я пытаюсь преобразовать число HEX в короткий (2 байта), используя C ++ все в порядке, кроме одного ... преобразование подписи из короткого в байт (последний тест)
я нашел этот вопрос и не смог извлечь из него пользу:переносимое байтовое преобразование со знаком / без знака, C ++
here are my tests:
<code>// test 1 - positive B2Short (success) byte *b = new byte[2]; b[0] = 0x10; //low byte b[1] = 0x00; //heigh byte signed short test = 0; test = ByteToShort(b); cout << test << endl; // test 2 - negative B2Short (success) b[0] = 0xF0; //low byte b[1] = 0xFF; //heigh byte test = 0; test = ByteToShort(b); cout << test << endl; // test 3 - positive Short2B (success) signed short n = 11; ShortToByte(n, b); test = ByteToShort(b); // for display to see if it worked cout << test << endl; // test 4 - negative Short2B (FAIL!) n = -11; ShortToByte(n, b); test = ByteToShort(b); // for display to see if it worked cout << test << endl; </code>
functions used:
<code>signed short ByteToShort(byte* bytes){ signed short result = 0; result = (result<<8) + bytes[1]; // heigh byte result = (result<<8) + bytes[0]; // low byte return result; } void ShortToByte(signed short num, byte* bytes){ bytes[1] = num & 0xFF00; // heigh byte bytes[0] = num & 0x00FF; // low byte } </code>
outputs:
<code>16 -16 11 245 </code>