如何将Hex转换为RGB? (perl的)

时间:2013-07-11 20:21:30

标签: perl hex rgb

如何将十六进制颜色(例如,0000FF,FF00FF)转换为算术RGB格式(例如,0 0 1,1 0 1)?

我想在我的一些perl脚本中实现一个命令,但我甚至不知道如何手工完成。

有人可以帮我在perl中执行此操作,甚至可以告诉我如何手动执行此操作,以便我可以提出自己的perl命令吗?

2 个答案:

答案 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'