文字とASCII値の変換
いつも関数名まで忘れて苦労するので、メモついでにおもちゃを作ってみた(謎)。
関係する関数は以下
おもちゃコードとして、文字列の独自エンコード/デコードする関数を作ってみた。
ASCII値での単なるrot1関数。可視化するためにbin2hexしているが。
<?php function rot1_encode($str) { $res = ''; $len = strlen($str); for ($i = 0; $i < $len ; ++$i) { $res .= chr(ord($str[$i])^0xff); } return bin2hex($res); } if (!function_exists('hex2bin')) { function hex2bin($str) { $res = ''; $len = strlen($str); for ($i = 0; $i < $len ; $i += 2) { $res .= pack("c", intval(substr($str, $i, 2), 16)); } return $res; } } function rot1_decode($str) { $str = hex2bin($str); $res = ''; $len = strlen($str); for ($i = 0; $i < $len ; ++$i) { $res .= chr(ord($str[$i])^0xff); } return $res; } $strs = array( 'こんにちは、ord()とchr()を使ったお遊びです。', 'お遊び', ); foreach ($strs as $str) { var_dump(rot1_encode($str)); var_dump(rot1_decode(rot1_encode($str))); }
これを実行すると以下のようになる。
$ php test.php string(122) "1c7e6c1c7d6c1c7e541c7e5e1c7e501c7f7e908d9bd7d61c7e579c978dd7d61c7d6d1b42401c7e5c1c7e601c7e75167e751c7e4c1c7e581c7e661c7f7d" string(61) "こんにちは、ord()とchr()を使ったお遊びです。" string(18) "1c7e75167e751c7e4c" string(9) "お遊び" $