PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第123回]
●SDカードIF(43)SDカードをWindows7に接続(16)CSVファイル(14)EXCELのゼロサプレス問題
[第121回]でExcelでBIT表現のデータファイルを開いたところ左側のビットが0のときにはその0が表示されないこと(ゼロサプレス)に気がつきました。
たとえば00000000は0、00000101は101というように表示されてしまいます。
このことはそれ以前の回での16進数データをExcelで開いた場合でも同じだったのですがそのときはまだそのこと(左側の0が表示されないこと)には気がついていませんでした。
16進数の場合には00〜09が0〜9になってしまいます。
Excelではそういう表示になってしまうのがルールなのでどうしようもないと一旦はそのように思ったのですが、何か方法があるのではないかと思い直して少し考えてみることにしました。
Excelでは数値に対してはゼロサプレスが利いてしまうのはどうやら仕方がないようです。
しかし文字列ならば?
常識的に考えれば文字列に対してゼロサプレスが働くなどということはありえないはずです。
なんとなれば、数値としての「0123」と「123」は同値なのですが、文字列としての「0123」と「123」は異なっているはずだからです。
もっとも数値といい文字列といってもどちらも人間が都合のよいように扱う符牒のようなものですから目的や用途によっていかようにも変化します。
それじゃあとらえどころがないことになってしまいますから、特にコンピュータの世界ではそこに何らかの情報を付加して「数値」であるか「文字列」であるかを区別します。
たとえばBASICなどでは文字列の両端を”(引用符)で挟むことでそれが文字列であることを示します。
”ABC”、”12345”という表し方です。
おお。
それだ。
それならExcel様にもご納得いただけるのでは。
ということでとりあえず16進数データの両端を”で挟む形のデータを出力するプログラムを作りました。
作成したプログラムはBINHEXE.EXEです。
BINHEXE.EXEを実行しました。
今までと同じようにTEST31.BINを読み込んでTEST31.CSVを出力しました。
その内容を確認するためDEBUGコマンドを実行しました。
16進数データの両端が「”」(ASCIIコードは22)で挟まれていることが確認できます。
これでどうじゃ。
そのように作成されたTEST31.CSVをExcelで開きました。
ぬあんと。
あかん。
駄目でありました。
「お前はばかか?」
” ”で「文字列」であることを示したにもかかわらずわざわざその中身を確認して「だんなさま。調べたら数値でしたのでそのように扱いました。ぼくって賢いでしょ」って、全然賢くない!!
Excelに限らず総じてWindowsの眷属にはこういうどうしようもないところがあって、もう腹が立ってパイを投げつけてやりたくなることがあります。
余りに見事なので、ひょっとしてこちらが間違えたかと思ってしまいます。
念のために確認いたしました。
うむむむむ。
間違いなどではありません。
同じTEST31.CSVを同じ画面上でExcelとTeraPadの両方で開いてみました。
間違いなく16進数データは” ”で挟まれています。
こうなると。
Excelは確信犯であります。
さて。
どうする?
PICBASICコンパイラ[第123回]
2024.1.2upload
前へ
次へ
ホームページトップへ戻る