PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第118回]
●SDカードIF(38)SDカードをWindows7に接続(11)CSVファイル(9)BINHEX
このところの何回かはバイナリファイルから十進データファイルを作成する作業について書いてきました。
PICBASICコンパイラボードが扱うデータとしては計算の対象になる数値が多いのではないかと考えたからです。
計算するための数値ということになれば当然十進数ということになります。
そういうことでこれまで作業をしてきたのですが。
「いや。ちょっと待てよ。PICで扱うデータは十進数だけではないのではないか」
という考えが浮かびました。
一番最初にテストデータとしてバイナリデータを作成したときは十進数は意識してなくてそのデータは16進数で表記していました。
そのことを思い出したのです。
たとえば8ビットのI/Oポートに対してデータを入出力するときに十進数を使うだろうか?
普通はバイナリのままかそれを16進数として扱うのではないだろうか?
そういうことならばバイナリから十進数に変換するだけでは片手落ちで当然16進数への変換プログラムも作らなければならないことになります。
年の瀬も押し迫っているというのになんとも難儀なことです。
しかしそのように思い付いてしまったからにはなんとかしなければなりませんでしょう。
ということで今回はバイナリから16進数への変換プログラムを作ってしまいました。
BINHEX.EXEです。
BINファイルを読み込んで作成するファイルもEXCELやTERAPADなどで開くことを前提に考えましたからHEXファイルではなくて今までと同じCSV形式のファイルです。
ちなみに一般に拡張子がHEXのファイルはインテルヘクサと呼ばれている形式のファイルです。
この形式のファイルはROMWRITERなどで使われています。
メモリの中身をそのまま記述するための方式です。
今回ここで考えているバイナリからヘクサ(16進数)への変換とは目的が異なりますから、ここで作成される16進数データファイルはインテルヘクサ形式のファイルではありません。
BINHEX.EXEを実行しました。
いままでと同じようにTEST31.BINを読み込んでTEST31.CSVを作成しました。
しかし今回作成したTEST31.CSVファイルの中身は十進数データではなくて16進数データです。
そのことを確認するためにこれもいつものようにDEBUGコマンドで確かめてみました。
DEBUG TEST31.CSV[Enter]でDEBUGコマンドを起動したあとDコマンドでファイルの先頭の128バイトを表示させました。
右側にデータをASCIIコードと考えたときの文字が表示されています。
データ自体はバイナリではなくてバイナリデータを16進数で表示するときの30〜39、41〜46のASCIIコードに変換されていることがわかります。
そのように作成されたTEST31.CSVをTeraPadで開きました。
前回まで十進数として表示されていた値が16進数で表示されています。
ファイルの終わりのところです。
今度はExcelで開きました。
Excelではセルの書式が標準の場合十進数は数値として右詰で表示されるのに対して16進数は文字列として扱われるので左詰で表示されてしまいます。
今回は全部16進数なのですがA〜Fを含まない値の場合は十進数とみなされるため上のようにちぐはぐな表示になってしまいます。
こういうところがExcelの困ったところです。
実はExcelの困ったところはほかにもあるのですがそれについてはまた後ほど書くことにします。
こちらはファイルの終わりのところです。
PICBASICコンパイラ[第118回]
2023.12.28upload
前へ
次へ
ホームページトップへ戻る