Chapter Seventeen

第17話



四則演算ができあがったので、今度は人間が理解しやすい10進数との変換VIを作ろう。あまりぱっとしたアイデアが浮かばないので、地道に変換を行うことにする。

10進数のストリングからU32nへの変換は、たとえば3892 = 2×1 +9×10 +8×100 +3×1000の計算を行う要領でできる。

手順は以下の繰り返しだが、ダイアグラムを見てもらうと分かりやすいと思う。
(1)10進数のストリングを下から1個切り取ってU32n数値に変換する。
(2)切り取った部分の桁数だけU32nでのA(Hex)を繰り返しかけたものに、(1)でつくったU32nをかける。
(3)0に初期化したU32nにたしこむ。


U32nから10進数のストリングへの変換は、少し分かりにくいかもしれない。
ダイアグラムに訳の分からないDecInDecOutというサブVIが入っているが、とりあえず無視してDec(OUT)という出力に注目しよう。2重ループはU32nというU32の1次元配列をDec(OUT)というU8の1次元配列に変換するものだ。Dec(OUT)は10進数の位ごとの数値(0〜9)で配列の0番目が1の位になっている。Dec(OUT)を一つづつストリングに変換して、先頭に連なる0を取り除くと目的の変換が終了する。

DecInDecOutは、ある要素の数値(0〜255)の一桁目のみを残してその上の桁を次の要素にたし込むことで10進数の桁上げをするVIだ。

U32nから10進数のストリングへの変換のための2重ループの説明に戻ろう。
2重ループの中では、U8配列表現で2のべき乗を計算し、U32の要素をブーリアンに変換して1のときに加算する。それぞれの処理の後でDecInDecOutを使って桁上げ処理を行う。

もっと良い方法が有りそうなもんだが、意見があったらよろしく!

See you!


Nigel Yamaguchi

戻る