質問: 123.456789 ' バイナリファイル出力 Open "C:\test.dat"For Binary As 1 Put 1, , int_value Put 1, , temp Put 1, , double_vale Close #1
回答: バイナリエディタで読めという回答にマイナスがついていますが、私は全く的外れな回答とは思っていません。 VB6 ということですが、VBA でも全く同じ関数があるのでやってみました。 おそらく互換性があると思います。 できたものをダンプしたのが次です。 ``` 03 00 0B 00 48 65 6C 6C 6F 20 57 6F 72 6C 64 00 00 04 00 74 65 73 74 16 00 57 69 6E 64 6F 77 73 31 30 20 50 72 6F 66 65 73 73 69 6F 6E 61 6C 05 00 4A 61 70 61 6E 00 00 0B 0B EE 07 3C DD 5E 40 ``` 最初の 2 バイト `03 00` は 16 ビットリトルエンディアンで 3 のことです。 最初に 3 を書き込んでいるので合致します。 次の 2 バイト `0B 00` は同じく 16 ビットリトルエンディアンで 11 です。 整数値は 16 ビットリトルエンディアンで書き込んでいると思えばいいようです。 この 11 というのは「Hello World」の文字数です。 次に続く `48 65 6C 6C 6F 20 57 6F 72 6C 64` が `Hello World` を ASCII コードで表したものです。 つまり可変長文字列を書き込む場合にはまず文字数を書き込んでから文字列本体を書き込むようです。 続く `00 00` は空文字の文字数です。 その次の `04 00` は 4 です。`test` の文字数です。 このように、書き込まれたものを読んでいけば法則がわかります。 恐らく互換性があるとは思いますがその保証はないので、VB6 で実際に作ったものを同様に読んでください。