Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 29.03.2012, 09:33   #1
executer
Нуждающийся
 
Регистрация: 19.11.2009
Сообщений: 64
Написано 4 полезных сообщений
(для 6 пользователей)
Подскажите,как выделить байты из 4х байтового числа?

Подскажите пожалуйста,как выделить байты из 4х байтового числа?
Понимаю что тут маска нужна
Пробовал and-что то видимо не так задаю
на входе результат Print Hex(msg)
например 800С400Е
Нужно как то выделить 1,2,3,4 ,байты

Пробовал что то типа Print Hex(msg)And Hex (FFFFFF)
но результат не тот
Вопрос детский-но сам недопираю где ошибка
(Offline)
 
Ответить с цитированием
Старый 29.03.2012, 09:43   #2
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Ответ: Подскажите,как выделить байты из 4х байтового числа?

http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE% D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8
http://ru.wikipedia.org/wiki/%D0%91%...B2%D0%B8%D0%B3

Разбирайся.
(Offline)
 
Ответить с цитированием
Старый 29.03.2012, 10:03   #3
executer
Нуждающийся
 
Регистрация: 19.11.2009
Сообщений: 64
Написано 4 полезных сообщений
(для 6 пользователей)
Ответ: Подскажите,как выделить байты из 4х байтового числа?

Спасибо!
3й байт вроде выделил Print ((msg)Shr 16)-36864
а вот другие что то не получаются
(Offline)
 
Ответить с цитированием
Старый 29.03.2012, 10:08   #4
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: Подскажите,как выделить байты из 4х байтового числа?

Сообщение от 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, т.е. справа налево и наоборот. Но с этим не заморачивайся, если числа везде сам упаковываешь\распаковываешь, а вот для взаимодействия с другими программами (или библиотеками) стоит поинтересоваться.

Последний раз редактировалось Платон Александрович, 29.03.2012 в 12:22.
(Offline)
 
Ответить с цитированием
Старый 29.03.2012, 10:14   #5
executer
Нуждающийся
 
Регистрация: 19.11.2009
Сообщений: 64
Написано 4 полезных сообщений
(для 6 пользователей)
Ответ: Подскажите,как выделить байты из 4х байтового числа?

Спасибо-пробую сейчас!
Платон Александрович-вы мне отвечали про запись звука?
(Offline)
 
Ответить с цитированием
Старый 29.03.2012, 10:24   #6
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: Подскажите,как выделить байты из 4х байтового числа?


Сообщение от executer Посмотреть сообщение
Платон Александрович-вы мне отвечали про запись звука?
Ага, только давай на ты
Я в аське сейчас.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:38.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com