How do I convert my hexidecimal colors (eg, 0000FF, FF00FF) into arithmetic RGB format (eg, 0 0 1, 1 0 1)?
I want to implement a command to do this in some of my perl scripts but I don't even know how to do it by hand.
Could someone please help me do this in perl or even show me how to do this by hand so I can come up with my own perl command?
Assuming you're trying to map 00..FF 16 to real numbers 0..1,
my @rgb = map $_ / 255, unpack 'C*', pack 'H*', $rgb_hex;
pack 'H*',
changes "FF00FF"
to "\\xFF\\x00\\xFF"
. unpack 'C*',
changes "\\xFF\\x00\\xFF"
to 0xFF, 0x00, 0xFF
. map $_ / 255,
changes 0xFF, 0x00, 0xFF
to 0xFF/255, 0x00/255, 0xFF/255
There is already a CPAN module that does what you want: https://metacpan.org/pod/Color::Rgb
use Color::Rgb;
my $hex = '#0000FF';
my @rgb = $rgb->hex2rgb($hex); # returns list of 0, 0, 255
my $rgb_string = $rgb->hex2rgb($hex,','); # returns string '0,0,255'
It can also go the other direction:
my @rgb = (0, 0, 255);
my $hex_string = $rgb->rgb2hex(@rgb); # returns '0000FF'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.