|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Как представить ushort двумя байтами? |
|
.NET - Как представить ushort двумя байтами?
|
Новый участник Сообщения: 8 |
Доброго дня товарищи. Ситуация такая , что не могу нагуглить, т.к. не знаю, что это за операция такая.
В общем - есть у меня переменная, 2 байта (пущай будет ushort), и для наглядности, значение у нее - 0xFFAA. Суть в том, что я не хочу переменную длиной два байта, я хочу два байта. Байт а, со значением 0xFF и байт b со значением AA. Что же я пробовал для этого сделать? Собственно, для переменной b все просто - я сдвигаю все это дело вправо, дабы выгнать AA за границу "двух байт", и первые 8 разрядов заполнить нулями. А вот для переменной b (той что AA), я извращаюсь так - сначала сдвигаю влево, чтобы выгнать FF за левую границу, а после, чтобы не было 8 значимых нулей, сдвигаю вправо :-D. Ну вроде логично с точки зрения начинающего. Однако во второй операции, те 8 бит FF, что я сдвинул, при втором сдвиге "возвращаются" О_о (что за на***) ushort a = (ushort)(0xFFAA >> 8); // выгнал AA за край, получил FF - все хорошо ushort a = (ushort)((0xFFAA << 8) >> 8); // Выгоняю FF за левый край, и двигаю AA на место - FF возвращается, результат операции - 0xFFAA Прав ли я в своих операциях, и FF "возвращается" (что за бредятина)), или же где то кроется ошибка. Собственно, почему у меня не вышло, и как ushort (16 бит) порезать на 2 переменные типа byte (8 бит)? P.s. я могу предположить, что при сдвиге влево .NET выделяет еще два байта, и посему у меня нифига не выходит (простая логика подсказывает) Но почему я не могу сдвигать за левую границу, если могу за правую??? |
|
Отправлено: 16:11, 05-12-2013 |
Ветеран Сообщения: 2029
|
Профиль | Отправить PM | Цитировать В С/С++ это делается при помощи объединения:
union TwoBytes { unsigned short Value; char Byte1, Byte2; }; Как с этим обстоит у Microsoft, извините, не знаю. |
------- Отправлено: 16:40, 05-12-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Нарыл вот такую штуку : побитовая маска
Вроде вот при таком подходе - получается Т.е. насколько я понимаю, он выбирает значимые разряды числа 0xFFAA по маске 0x00FF, или же 0000 0000 1111 1111 (маска) xxxx xxxx |||| |||| 1111 1111 1010 1010 (число) = 0000 0000 1010 1010 (результат) Есть конечно предположения, что при сдвиге влево, выделяется еще 2 байта (до int32 unsigned) и после приводятся (ushort). Однако, хотел бы услышать мнение хорошего человека знающего c# Цитата:
|
|
Последний раз редактировалось Carmageddon, 05-12-2013 в 16:56. Отправлено: 16:48, 05-12-2013 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] как представить MP3 аудио в виде DVD видео | Cakc | Видео и аудио: обработка и кодирование | 8 | 15-04-2013 17:01 | |
Proxy/NAT - Как настроить сетку между двумя компами | TatarinKZ | Сетевые технологии | 11 | 31-01-2008 01:31 | |
Переключение раскладки клавиатуры двумя шифтами -- КАК?! | Alik_1978 | Microsoft Windows 2000/XP | 13 | 05-12-2006 23:24 | |
Как поставить выбор между двумя виндовсами? | Mavlyudov | Microsoft Windows 95/98/Me (архив) | 11 | 21-12-2004 13:02 | |
Как вставить бит м/у 2 байтами ? | Guest | Программирование и базы данных | 2 | 10-02-2003 05:33 |
|