多倍長電卓LMを使って基数変換をする

基数変換、16進数から10進数への変換などをしたい時、2,10,16などの代表的なものや、
比較的小さい(15桁くらい)の変換ならExcelやインターネットで公開されているツールでできる。
ただ、ある程度以上長くなるとintやlongの限界を超えてしまうため、多倍長整数での計算が必要となる。
pythonや各言語のライブラリを使っても可能だが、今回は「多倍長電卓LM」を使うことにした。
この電卓は多倍長整数を扱えるだけでなく、C言語の文法をベースとしたコードを書くことである程度の計算が出来るのも特徴だ。
この多倍長電卓LMで基数変換をするコードを書いた。
一旦メモ帳などにコピーして書き換えてから多倍長電卓に貼り付けることで実行できる。
cardが変換前の基数、card2が変換後の基数。
order,order2がそれぞれ変換前後の値の桁数。
values[0]~に各桁の10進法での値を入れる。
values[0]が一番下の桁の値だ。
そして配列values2の各要素に変換後の各桁の値がはいる。
9以降はアルファベットをaから用いているので、36進数まで対応している。

var card = ;
var card2 = ;
var order = ;
var order2 = ;
var values[order];
var values2[order2];
var answer=0;
values[0] = ;
values[1] = ;
values[2] = ;
values[3] = ;
values[4] = ;
values[5] = ;
values[6] = ;
values[7] = ;
values[8] = ;
values[9] = ;
values[10] = ;
values[11] = ;
values[12] = ;
values[13] = ;
values[14] = ;
values[15] = ;
values[16] = ;
values[17] = ;
values[18] = ;
values[19] = ;
values[20] = ;

for(i=0;i<order;i++){
 answer += values[i]*card^i;
}
print answer;
var i = 0;
while(answer >0){
 values2[i] = answer%card2;
 answer = floor(answer/card2);
 i++;
}
for(i=0;i<order2;i++){
 switch(values2[i]){
  case 10:
   print "A";
   break;
  case 11:
   print "B";
   break;
  case 12:
   print "C";
   break;
  case 13:
   print "D";
   break;
  case 14:
   print "E";
   break;
  case 15:
   print "F";
   break;
  case 16:
   print "G";
   break;
   print "H";
   break;
  case 18:
   print "I";
   break;
  case 19:
   print "J";
   break;
  case 20:
   print "K";
   break;
  case 21:
   print "L";
   break;
  case 22:
   print "M";
   break;
  case 23:
   print "N";
   break;
  case 24:
   print "O";
   break;
  case 25:
   print "P";
   break;
  case 26:
   print "Q";
   break;
  case 27:
   print "R";
   break;
  case 28:
   print "S";
   break;
  case 29:
   print "T";
   break;
  case 30:
   print "U";
   break;
  case 31:
   print "V";
   break;
  case 32:
   print "W";
   break;
  case 33:
   print "X";
   break;
  case 34:
   print "Y";
   break;
  case 35:
   print "Z";
   break;
  default:
   print values2[i];
 }
}

コメント

このブログの人気の投稿

2次元配列のコピー::JavaScript

iframeの利点と欠点

chromyを実行するとエラー:"Failed to launch a browser"が出る