Oops. I meant 16 raised to the power of 3 for 4096 NOT 16^4 ... sorry for
any confusion.
Also one other mistake I made:
When subtracting the integer portion of the "green column" you are not left
with the value of the "red cilumn", you still need to multiply by 256.
I think those are my only mistakes ... [I hope!].
Jonathan
========================
Jonathan Southwick
[EMAIL PROTECTED]
Technical & Network Services
Allegheny College
Meadville, PA 16335
(814) 332-2755
At 3/10/2003 09:24 AM, you wrote:
If you know your hexadecimal to decimal conversions, and decimal to
hexadecimal, it's easy:
To begin we need to undertsand that #00FF00 separates to:
Hex color Dec
=== ===== ===
00 red 0
FF green 255
00 blue 0
we get 255 because the characters 0 - 9 and A - F are used in hexidecimal
notation. The numbers 0 - 9 in hexadecimal represent their correspnding
values in decimal. The letters A - F in hexadecimal represent the numbers
10 - 15 in decimal respectively. The units in hexadecimal are base 16 so
starting at the right and working toward the left you have 1's (16 raised
to the power of 0; i.e. 16^0), 16's (16 raised to the power of 1; 16^1),
256's (16 raised to the power of 2; 16^2), 4096 (16 raised to the power of
4; 16^4), etc. for hexidecimal just as in decimal it is (starting from the
right) 1's (10^0), 10's (10^1), 100's (10^2), 1000's (10^3),
etc. Therefore FF in hexidecimal is (15 * 1) + (15*16) = 255 in decimal.
Using this idea you do the same thing for converting the decimal number
65280 into the hexadecimal representation but work backwards. Also
instead of working in base 16 you are working in base 256 with each pair
of hexadecimal numbers. Also you are working from left to right. The
"red column" is 1's (256^0), the "green column" is 256's (256^1), and the
"blue column" is 25536's (256^2). In your example 00 (red) in hex is 0 in
decimal so we have (0 * 1 = 0), next you have FF (green) in hex is 255 in
decimal so we have (256 * 255 = 65280), and finally 00 (blue) in hex is 0
in decimal so we have (0 * 65536 = 0). Putting this altogether you have 0
+ 65280 + 0 = 65280.
Of course you wanted to know how to convert the other way. This is just
as easy. You just work with the opposite idea. You had 65280 so you
divide by the highest possible power which is 65536, the result is
0.99609375, the integer portion is 0 so we know we have 0 for the blue
column, then you subtract the inter value you receive (in this case 0) and
we are still left with 0.99609375, which we multiply by the next highest
power (256) and we get 255 for our green column, then you subtract the
integer value from the result (255 - 255 = 0), and the result is the red
columns value. Of course all the values you get are in decimal so you
will need to convert these smaller values into their hexadecimal
equivalents: 0 -> 0, 255 -> FF, 0 -> 0 and join these values together:
00FF00.
It's pretty simple if you understand powers and bases.
If you want I could write a little script that would do the conversion for
you but I thought I would explain how the result is achieved so that you
can understand it better.
This whole description might be a little confusing so if anyone can
explain it better or has an easier way to do the conversion please go
ahead and post it.
Jonathan
========================
Jonathan Southwick
[EMAIL PROTECTED]
Technical & Network Services
Allegheny College
Meadville, PA 16335
(814) 332-2755
At 3/10/2003 03:56 AM, you wrote:
From the win32 gui example colors.gpl
$color = GUI::ChooseColor(-owner => $w);
Any idea how I can convert the decimal RGB value, $color to the HTML HEX
format ?
ie: selecting the colour green returns 65280 How do I convert this to the
HTML HEX value: #00FF00 ?
Thanks!
Do you Yahoo!?
<http://rd.yahoo.com/finance/mailtagline/*http://taxes.yahoo.com/>Yahoo!
Tax Center - forms, calculators, tips, and more