разбиение слова на байты
допустим есть переменная типа short
Код:
short var = 0xF3A5;
нужно ее разделит на 2 разные переменные 0xF3 и 0xA5.
а потом после некоторых модификаций снова слить их воедино
Может кто-то знает как это делается?
И существует ли в C++ тип byte? у меня Visual C++ 2005 ругается на него...
1)
Код:
char a, b;
short var = 0xF3A5;
b = var & 0xFF;
a = ( var >> 8 ) & 0xFF;
var = ( a << 8 ) + b;
short var = 0xF3A5;
b = var & 0xFF;
a = ( var >> 8 ) & 0xFF;
var = ( a << 8 ) + b;
2)
Код:
union
{
short var;
char a[2];
} temp;
temp.var = 0xF3A5
{
short var;
char a[2];
} temp;
temp.var = 0xF3A5
в temp.a[0] и в temp.a[1] как раз будут половинки слова
Код:
char b0 = reinterpret_cast<char*>(&var)[0];
char b1 = reinterpret_cast<char*>(&var)[1];
char b1 = reinterpret_cast<char*>(&var)[1];
Кстати, я бы не был абсолютно уверен, что short - это два байта ;)