![]() |
Подскажите,как выделить байты из 4х байтового числа?
Подскажите пожалуйста,как выделить байты из 4х байтового числа?
Понимаю что тут маска нужна Пробовал and-что то видимо не так задаю на входе результат Print Hex(msg) например 800С400Е Нужно как то выделить 1,2,3,4 ,байты Пробовал что то типа Print Hex(msg)And Hex (FFFFFF) но результат не тот Вопрос детский-но сам недопираю где ошибка:) |
Ответ: Подскажите,как выделить байты из 4х байтового числа?
|
Ответ: Подскажите,как выделить байты из 4х байтового числа?
Спасибо!
3й байт вроде выделил Print ((msg)Shr 16)-36864 а вот другие что то не получаются |
Ответ: Подскажите,как выделить байты из 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, т.е. справа налево и наоборот. Но с этим не заморачивайся, если числа везде сам упаковываешь\распаковываешь, а вот для взаимодействия с другими программами (или библиотеками) стоит поинтересоваться. |
Ответ: Подскажите,как выделить байты из 4х байтового числа?
Спасибо-пробую сейчас!
Платон Александрович-вы мне отвечали про запись звука? |
Ответ: Подскажите,как выделить байты из 4х байтового числа?
|
Часовой пояс GMT +4, время: 05:27. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot