16 進数の色 (例: 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'
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