简体   繁体   中英

How to convert Hex to RGB? (perl)

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM