Entry: 開発小ネタその2(改)
開発小ネタその2(改)
Initial post:
2009.10.14
|
Last modified:
2009.10.14
開発小ネタ集その2のネタ、なんか違和感あると思ったらゼロがなかったんだ。という訳で書き直した。66進数。縮.jpは差し詰め、1945進数か。
use strict; use warnings; ### 文字リスト our @ascii = qw( 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ + - = ); my $num1 = str2num("0"); ### 0 my $num2 = str2num("="); ### 65 my $num3 = str2num("10"); ### 66 my $num4 = str2num("A359"); ### 10363263 my $str = num2str(10363263); ### A359 ### -------------- ### 文字列を数値に変換 ### -------------- sub str2num { my $num = 0; my @id_array = split(//, $_[0]); @id_array = reverse(@id_array); for (my $i = 0; $i < scalar @id_array; $i++) { for (my $j = 0; $j < scalar @ascii; $j++) { if ($ascii[$j] eq $id_array[$i]) { $num += (scalar @ascii ** $i) * $j; last; } if ($j == scalar @ascii - 1) { return; } } } return $num; } ### -------------- ### 数値を文字列に変換 ### -------------- sub num2str { my $sho = int($_[0] / scalar @ascii); my $upper = ($sho > 0) ? &num2str($sho) : ""; my $current = $ascii[($_[0] % scalar @ascii)]; return $upper. $current; }
Subscribe to my RSS feed