У меня есть 32 битное число, есть 4 байта. Как мне эти 4 байта упаковать в 32 бита. Последовательность байтов я знаю. И как потом заново получить эти 4 байта. Заранее спасибо!
Сергей Борщ
Jun 7 2010, 13:01
Какой язык программирования вы используете?
Andruxa-1
Jun 7 2010, 13:09
Учу С. Разобрался с битовыми операциями байт-байт. А вот перевод с одной разрядности в другую пока не нашел.
jorikdima
Jun 7 2010, 13:19
Цитата(Andruxa-1 @ Jun 7 2010, 17:09)
Учу С. Разобрался с битовыми операциями байт-байт. А вот перевод с одной разрядности в другую пока не нашел.
нет такой операции в С
Код
unsigned int var; uinsigned char v1, v2, v3, v4; var = ((unsigned int)v1) << 24; var |= ((unsigned int)v2) << 16; var |= ((unsigned int)v3) << 8; var |= (unsigned int)v1;
Как-то так.
MrYuran
Jun 7 2010, 13:20
Код
union FourBytes{ char Bytes[4]; int Words[2]; long DoubleWord; float Float; };
FourBytes.Bytes[2] - 3-й байт FourBytes.Words[0] - младшее слово (2 байта) FourBytes.Float - 4 байта в формате float
...Если это то, что я подумал...
Andruxa-1
Jun 7 2010, 13:39
Цитата(jorikdima @ Jun 7 2010, 16:19)
нет такой операции в С
Код
unsigned int var; погрызли мыши
Как-то так.
Да действительно так! Огромное спасибо!
ViKo
Jun 7 2010, 14:09
Цитата(Andruxa-1 @ Jun 7 2010, 16:39)
Да действительно так! Огромное спасибо!
То, что вам предложили позже (union), вообще не потребует преобразований.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.