Как в C мы можем читать и делать переменные DWORD
с низким и высоким словом и низким и высоким байтом?Переменная DWORD с низким/высоким словом и низким/высоким байтом
ответ
В Win32 a DWORD - это 32-разрядное целое число без знака. В других контекстах это могло бы означать что-то еще.
Assuminng определение Win32 (и другие Win32) определений типов:
BYTE lsb = 0x11 :
BYTE next_lsb = 0x22 :
BYTE next_msb = 0x33 :
BYTE msb = 0x44 :
DWORD dword_from_bytes = (msb << 24) | (next_msb << 16) | (next_lsb << 8) | lsb ;
dword_from_bytes
будет иметь значение 0x44332211
.
Аналогично:
WORD lsw = 0x1111 :
WORD msw = 0x2222 :
DWORD dword_from_words = (msw << 16) | lsw ;
dword_from_words
будет иметь значение 0x22221111
.
Чтобы извлечь сказать, третьи байты из dword_from_bytes
например:
next_msb = (dword_from_bytes >> 16) & 0xff ;
хотя & 0xff
не является строго необходимым в этом случае данного типа next_msb
, но если тип приемника был больше, чем 8 бит , он будет маскировать бит msb.
WinAPI предоставляет макросы для манипуляции этих типов, таких как:
Кроме того, у вас есть 'HIBYTE' и' LOBYTE' соответственно –
- 1. Разница между байтом, словом, длинным и длинным словом?
- 2. Разница между байтом флип и байтом swap
- 3. Работа с строкой и байтом в python
- 4. Слияние не удается обновить Entity с байтом [] переменная-член
- 5. Перечисление Android с байтом
- 6. булевой операции с байтом
- 7. UTF-16 кодировка большого конца с байтом-байтом
- 8. Проблема с C# с байтом []
- 9. Protobuf-net RPC с байтом []?
- 10. addslashes() пример с NULL-байтом?
- 11. Можно добавить строку с байтом?
- 12. Текстовое поле с шестнадцатеричным байтом
- 13. рубин строка с нулевым байтом
- 14. Путаница точности проблемы с байтом
- 15. Прояснение кодировки с переменным байтом
- 16. Селектор: первая ошибка с байтом
- 17. Linq сравнить перечисление с байтом
- 18. Нечетное поведение с байтом [] C++
- 19. Проблема с zipfile/байтом Java
- 20. Разница между байтом и символом в C
- 21. Как биты становятся байтом?
- 22. "с" ключевым словом в JavaScript
- 23. Лучший способ преобразования между байтом [] и строкой?
- 24. Деление файла байтом
- 25. Java Побитовое или между байтом и Int
- 26. Сколько бит является «словом»?
- 27. Как сделать число байтом?
- 28. Разделить строку байтом
- 29. Использование RangeValidator байтом
- 30. Наследование и проблемы с ключевым словом «this»
Теперь он начинает иметь смысл. Но что на самом деле означает '<<', '>>' и '|'? Благодаря! – Midas
Лучше использовать выделенные макросы, такие как 'HIWORD',' LOWORD', 'MAKELONG' и т. Д. Поскольку разные процессоры используют разные байтовые заказы (маленькие/большие эндианты и т. Д.) – valdo
Ну, неважно. Я прочитал документы о побитовых операторах, и я понимаю, как это работает сейчас! – Midas