C++ Я пытаюсь преобразовать число HEX в короткий (2 байта) с использованием C++ всех КИ для одно ... подписал перехода от короткого замыкания на байты, за исключением (последний тест)подписал короткие байты в
я нашел этот вопрос и не мог извлечь из этого пользу: portable signed/unsigned byte cast,C++
вот мои тесты:
// 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;
используемых функций:
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
}
выходы:
16
-16
11
245
Почему бы не использовать союз? –
Что такое 'byte'? Это тип typedef? Если да, укажите его определение. –