4

16 進数の色 (例: 0000FF、FF00FF) を算術 RGB 形式 (例: 0 0 1、1 0 1) に変換するにはどうすればよいですか?

一部の perl スクリプトでこれを行うコマンドを実装したいのですが、手動で行う方法さえ知りません。

誰かが私がこれをperlで行うのを手伝ってくれませんか、それとも私が自分のperlコマンドを思い付くことができるように手動でこれを行う方法を教えてくれませんか?

4

2 に答える 2

10

あなたが望むことを行う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'
于 2013-07-11T20:24:45.547 に答える
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
于 2013-07-11T20:42:25.620 に答える