RGB>HEX & HEX>RGB

Обсуждение программ nnCron и nnCron LITE

RGB>HEX & HEX>RGB

Postby Morituruz » Fri, 29 Mar 2013, 15:34

Как перевести из RGB (255 255 0) в HEX (0xFFFF00) и наоборот?
Как вывести шестнадцатеричное число на консоль в «шестнадцатеричном» виде?
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: RGB>HEX & HEX>RGB

Postby VoidVolker » Fri, 29 Mar 2013, 17:24

Code: Select all
  : .H   \ ( num -- )  \ Распечатать число со стека в шестнадцатиричной системе счисления
    BASE @ SWAP HEX
    S>D <# BL HOLD # #  # #  # #  # #  #> TYPE
    BASE !
  ;

Code: Select all
: RGB>   \ ( color -- r g b)
  0x00FFFFFF AND
  0x10000 /MOD SWAP
  0x100 /MOD SWAP
;

: ARGB>   \ ( color -- a r g b)
  DUP 24 RSHIFT SWAP
  RGB>
;

: >RGB   \ ( r g b -- color )
  SWAP 0x100 * +
  SWAP 0x10000 * +
;

: >ARGB   \ ( a r g b -- color )
  >RGB
  SWAP 24 LSHIFT OR     \ argb
;
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: RGB>HEX & HEX>RGB

Postby Morituruz » Wed, 03 Apr 2013, 21:48

Спасибо. Люблю рандом (в меру) =-)
Code: Select all
#( CLASSIC-TASK-#-notes
\ 16:27 03.04.2013
WatchHotKey: "^+n"
CREATE note_string 256 ALLOT
Action:
WIN-INPUT-TEXT: "Записка" "" "%crlf%" 0 0=
IF
   note_string PLACE
   \ по вертикали во второй половине, но не ближе 100 пикселей к краю:
   0 yRes 2 / DUP 100 - RANDOM + HINT-POS
   55 RANDOM 200 +   \ RED
   55 RANDOM 200 +   \ GREEN
   55 RANDOM      \ BLUE
   >RGB 0x000000 HINT-COLOR
   note_string COUNT HINT
   " %YYYY%.%MM%.%DD% %hh%:%mm% "
   note_string COUNT CRLF S"  " StringReplace S+ CRLF S+
   S" notes" FAPPEND LAS-FREE
THEN
)#
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: RGB>HEX & HEX>RGB

Postby VoidVolker » Thu, 04 Apr 2013, 12:42

На самом деле, формулировка вопроса не совсем корректна. RGB - это формат представления цвета, а HEX - это шестнадцатеричная система счисления, т.е. просто представление числа для человека. Для машины число не меняется.
Т.е. надо объединить три однобайтовых числа в одно четырех-байтовое и наоборот. По сути - просто умножение/деление двух чисел на четыре и два шестнадцатеричных разряда и сложение результата.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: RGB>HEX & HEX>RGB

Postby Morituruz » Thu, 04 Apr 2013, 16:49

То, что на самом деле внутри всё двоичное, понятно. Я просто не видел, чтобы в nncron шестнадцатеричный вид где-то ещё кроме цвета использовался.
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: RGB>HEX & HEX>RGB

Postby VoidVolker » Thu, 04 Apr 2013, 20:32

Ну например флаги удобно задавать, виндовые константы в заголовочных файлах тоже в шестнадцатеричном виде, коды чисел. Используется постоянно очень часто - ибо степень двойки.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot] and 2 guests