如何将十六进制颜色(例如,0000FF,FF00FF)转换为算术RGB格式(例如,0 0 1,1 0 1)?
我想在我的一些Perl脚本中实现一个命令来执行此操作,但我甚至不知道怎么手动完成。
能否有人帮助我在perl中完成这个任务,或者甚至向我展示如何手动完成,以便我可以自己编写perl命令?
已经有一个符合你要求的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'
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
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
。 - ikegamimy $rgb = join(', ', map $_, unpack 'C*', pack 'H*', $rgb_hex);
- yahermann