Сообщение от executer
Подскажите пожалуйста,как выделить байты из 4х байтового числа?
|
Сдвигай число на нужное кол-во бит вправо (суть - обрезать число справа), потом маской обрезаешь число слева:
(считаем справа налево)
1 байт - Number And $FF
2 байт - ( Number Shr 8 ) And $FF
3 байт - ( Number Shr 16 ) And $FF
4 байт - Number Shr 24
т.е. было $12 34 56 78
применил маску $FF - выделил $78
сдвинул число вправо на 8 бит, т.е. на байт, получил $00 12 34 56
потом применил маску $FF - выделил $56
и т.д.
справедлива и обратная операция, т.е.
есть у тебя 4 байта
$12
$34
$56
$78
сдвигаешь каждый байт влево, через другие байты, т.е.
$12 Shl 24 - на четвертое место
$34 Shl 16 - на третье место
$56 Shl 8 - на второе место
$78 - остается на первом месте
и складываешь их все операцией Or:
Number = ($12 Shl 24) Or ($34 Shl 16) Or ($56 Shl 8) Or $78
ЗЫ
Так-же не стоит забывать что существует два порядка следования байтов в числе - little-endian и big-endian, т.е. справа налево и наоборот. Но с этим не заморачивайся, если числа везде сам упаковываешь\распаковываешь, а вот для взаимодействия с другими программами (или библиотеками) стоит поинтересоваться.