From: Jonathan Southwick <jsouthwi@al...>  20030310 15:16:18

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 jsouthwi@... Technical & Network Services Allegheny College Meadville, PA 16335 (814) 3322755 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 >jsouthwi@... >Technical & Network Services >Allegheny College >Meadville, PA 16335 >(814) 3322755 > > > >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 