如何将十六进制颜色(例如,0000FF,FF00FF)转换为算术RGB格式(例如,0 0 1,1 0 1)?
我想在我的一些perl脚本中实现一个命令,但我甚至不知道如何手工完成。
有人可以帮我在perl中执行此操作,甚至可以告诉我如何手动执行此操作,以便我可以提出自己的perl命令吗?
答案 0 :(得分:10)
假设你试图将00..FF 16 映射到实数0..1,
my @rgb = map $_ / 255, unpack 'C*', pack 'H*', $rgb_hex;
pack 'H*',
将"FF00FF"
更改为"\xFF\x00\xFF"
。unpack 'C*',
将"\xFF\x00\xFF"
更改为0xFF, 0x00, 0xFF
。map $_ / 255,
将0xFF, 0x00, 0xFF
更改为0xFF/255, 0x00/255, 0xFF/255
答案 1 :(得分:9)
已经有一个CPAN模块可以满足您的需求: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'
它也可以走另一个方向:
my @rgb = (0, 0, 255);
my $hex_string = $rgb->rgb2hex(@rgb); # returns '0000FF'