2010年2月1日月曜日

dechex(10進数から16進数へ)


「色彩の値を256といった10進数値からFFといった16進数に変換したいなあ」と思っていたので、関数を知れべたら、
dechex()という関数を知りました。

(dexhexと最初書いて、エラーが出ました(^^;)

これを使うと、for文で0~255までループさせ、その数値を16進数に変換して、テーブルセルのバックグラウンドカラーにprintfなどで代入できて、左の図のようなことができました。

ありがたや。

色を使ったいろいろな表現を考えているので、
dechexはお世話になりそうです。

hexdec()が逆の関数で、これもそのうち使うかな。。





一応、ソースを置いておきます。
表示は右が切れてますが、コピーしたらちゃんとコピーできますね。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>dechexの応用による、色彩テーブル</title>

<style type="text/css">
table{border-collapse:collapse;} 
td{width:60px;text-align:center;padding:0;}
</style>

</head>

<body>
<table>
<?php
//純色で、数値を上げていく。
for($i=0;$i<256;$i=$i+16){
        $R0=sprintf ("<td bgcolor='#0%s0000'>#0%s0000</td>",dechex($i),dechex($i));
        $G0=sprintf ("<td bgcolor='#000%s00'>#000%s00</td>",dechex($i),dechex($i));
        $B0=sprintf ("<td bgcolor='#00000%s'>#00000%s</td>",dechex($i),dechex($i));
        $R =sprintf ("<td bgcolor='#%s0000'>#%s0000</td>"    ,dechex($i),dechex($i));
        $G =sprintf ("<td bgcolor='#00%s00'>#00%s00</td>"    ,dechex($i),dechex($i));
        $B =sprintf ("<td bgcolor='#0000%s'>#0000%s</td>"    ,dechex($i),dechex($i));
    if($i<16){echo "<tr>".$R0.$G0.$B0."</tr>";}
    else{echo "<tr>".$R,$G,$B."</tr>";}
}
//混色で、二色目の数値を上げていく。
for($i=0;$i<256;$i=$i+16){
        $RG0=sprintf ("<td bgcolor='#ff0%s00'>#ff0%s00</td>",dechex($i),dechex($i));
        $GB0=sprintf ("<td bgcolor='#00ff0%s'>#00ff0%s</td>",dechex($i),dechex($i));
        $RB0=sprintf ("<td bgcolor='#0%s00ff'>#0%s00ff</td>",dechex($i),dechex($i));
        $RG =sprintf ("<td bgcolor='#ff%s00'>#ff%s00</td>",dechex($i),dechex($i));
        $GB =sprintf ("<td bgcolor='#00ff%s'>#00ff%s</td>",dechex($i),dechex($i));
        $RB =sprintf ("<td bgcolor='#%s00ff'>#%s00ff</td>",dechex($i),dechex($i));
    if($i<16){echo "<tr>".$RG0.$GB0.$RB0."</tr>";}
    else{echo "<tr>".$RG.$GB.$RB."</tr>";}
}
?>
</table>
</body>
</html>

http://labo.web-do.com/php/colors/dechex2.php
にファイルを置いておきました。

テーブルだから、文字列を選択できるのがなんか嬉しい。 。

0 件のコメント:

コメントを投稿