46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
|
||||||
1 | ||||||
Парсинг hex значений29.06.2018, 05:47. Показов 3436. Ответов 62
Метки нет (Все метки)
Здравствуйте. В ASM файле есть такая строка к примеру
dc.w 0, $8CE, $6AC, $48A, $268, $46, $224, 2 ; earth Я помещаю это в виде строкового массива $8CE $6AC $48A $268 $46 $224 2 Короче это цвета. Например 8CE это своеобразная шестнадцетеричная BGR палитра если перевести в RGB то приблизительно будет 255, 219, 146 Так вот в некоторых местах Есть $46 к примеру что будет как $046 Перевод в rgb палитру делается по формуле r = b * 255 / 14 g = g * 255 / 14 b = r * 255 / 14 Так вот вот в этой своеобразной палитре если цвет начинается на 0 то его не пишут. Только если заканчивается Как мне сделать парсинг палитры чтобы получить дополнительные 0 Добавлено через 48 минут В принципе и самому дошло как
0
|
29.06.2018, 05:47 | |
Ответы с готовыми решениями:
62
Парсинг большого количества hex значений из текстового файла Парсинг XML значений для получения значений Double Замена hex значений Редактирование hex значений в файле |
46 / 20 / 5
Регистрация: 29.12.2015
Сообщений: 1,814
|
|
07.07.2018, 19:37 [ТС] | 61 |
0
|
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
07.07.2018, 20:07 | 62 |
Alexandr_7, собирает вам цвет пикселя из трёх цветовых компонент...
0
|
-338 / 245 / 26
Регистрация: 01.06.2018
Сообщений: 3,137
|
|||||||||||
09.07.2018, 05:13 | 63 | ||||||||||
По правилам алгебры операции * и / равноценны, поэтому 2*2*2 = (2*2)*2 = 2*(2*2), а так же 2*2/2 = 2*(2/2) = (2*2)/2
Изучите основы двоичного представления данных, это базовые знания при манипуляции со многими данными в ПК. Например, 15 или $F или 0xF это 1111 - четыре бита. Поэтому когда вы пишете FF, то у вас в ПК это хранится как 11111111, то есть два раза по 1111. Если вы работаете с десятичными данными, например цвет 8 и они находятся во втором знаке, то вы не можете просто записать 1000 в переменную, так как значение цвета окажется не на своем месте. Вам нужно либо сдвинуть число на 4 бита - (8 << 4) и получить 10000000 или, что эквивалентно, умножить на 16 - (8*16) и так же получить 10000000, таким образом вы меняете значение определенного цвета. Бит можно использоваться как флаг, например для int значений один бит используется для указания на знак, поэтому максимальное абсолютное значение, которое вы сможете записать в такую переменную в 2 раза меньше, чем для unsigned int (беззнаковое целое). Флаги в своей программе можно использовать для разных целей везде, где вы используете bool. Например 1111 может хранить 4 флага, где мы условимся, что первый бит (принято считать справа) это например принадлежность игры к определенной кодировке цветовой палитры, второй бит, например, это тип эмулятора (если вы их используете всего два). И т.д. Обращаться к таким данным придется через операцию с логическим "И". Где "0" используется для отброса ненужных значений бит, а "1" для чтения бита. Например для нашего цвета 8 нужно будет делать (Color & 1000) (я упростил написание двоичного числа, если хотите использовать их явно, то пишите в C# как "1000".b() ). После такой операции везде где стоит "0" биты обнулятся, а там где стоит "1" будет прочитано одно из двух состояний, если "0" то будет "0", если "1", то будет "1". Так мы узнаем, есть ли нужный бит. В итоге, команда
0
|
09.07.2018, 05:13 | |
09.07.2018, 05:13 | |
Помогаю со студенческими работами здесь
63
Редактор hex-значений нетипизированного файла через Memo Отображение на экране значений головного и хвостового указателей кольцевого буфера в виде hex строк [Dendy] Увеличить начальную скорость падения блоков в tetris.1989 (редактирование значений в HEX редакторе) Парсинг значений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |