進数表現変換機を発掘した

昔作って今でもちょっと愛用している進数表現変換機プログラムのソースを偶然見つけた。懐かしさを感じつつ、ちょっと修正して公開してみる。

http://members.jcom.home.ne.jp/j-klein/src-box/dconv.c

コンパイル&使用法はソースの先頭に書いたので、そちらを参照。一応2, 8, 10, 16進数から1 < X <= 36進数への変換が可能。入力値は引数で指定するが、何進数かは数字のフォーマットを見て判断する。2進数は数字の末尾に"b"を付け、8進数は"0"、16進数は"0x"ではじまり、10進数はそのまま。つまり…

 2進数:1b, 1001b, 111b, 1001b, 111111b ...
 8進数:037, 021, 03443, 0377777 ...
10進数:1, 23, 43, 4324, 999 ...
16進数:0x1, 0x0f, 0xab, 0xffff ...

みたいな感じ。変換できるのは正数のみで、最大32bit(10進数で4294967295, 16進数で0xffffffff)まで。オプションに関しては-hオプションと、ソース先頭の使用法サンプルを見れば分かるでしょう。一応ひとつだけ使用例を…

[~/work/] john% dconv -a 10 0x10 010 10b
   source |  binary |        octal |    decimal |       hexa
       10 |    1010 |          012 |         10 |        0xa
     0x10 |   10000 |          020 |         16 |       0x10
      010 |    1000 |          010 |          8 |        0x8
       10 |      10 |           02 |          2 |        0x2