こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB2008 バイナリデータの書き込みで

現在、VB2008でバイナリデータを書き込むプログラムを作成しているのですが、String型のデータをバイナリデータに書き込むと、なぜかそのバイナリデータの先頭に05が入ってしまいます。
コードは以下のように記述しています。

TextBox1.Text = "TEST"
Dim Bin As New System.IO.BinaryWriter(New System.IO.FileStream(filename, IO.FileMode.Create))
~~~省略~~~
Bin.Write(TextBox1.Text)
~~~省略~~~
Bin.Close()

書き込まれたバイナリデータは、
05 54 45 53 54
で、テキスト欄では、
.TEST
と表示されます。

分かりにくい質問で申し訳ありませんが、回答よろしくお願いします。

投稿日時 - 2012-02-04 13:42:55

QNo.7284608

困ってます

質問者が選んだベストアンサー

こんにちは。
同じようなプログラムを書いたら確かに .TEST になりましたね。
原因は分かりませんけど、他の手段なら正常だったのでそちらをご紹介します。

TextBox1.Text = "TEST"
Dim FF As Integer = FreeFile()
FileOpen(FF, filename, OpenMode.Binary, OpenAccess.Write)
FilePut(FF, TextBox1.Text)
FileClose(FF)

お試し下さい。

投稿日時 - 2012-02-04 14:30:41

お礼

ありがとうございます。
無事書き込めるようになりました。

投稿日時 - 2012-02-04 17:49:55

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

先頭が05になるのがよくわからないのですが...
私の所では、04になりました。

で、VSのドキュメントには、以下の事が書いてありました。
それを見と、先頭に文字列の長さが付加されるようです。

「以下、ドキュメント抜粋」
長さのプリフィックスを持つ文字列は、その文字列の長さが格納されている 1 バイトまたはワードを文字列の先頭に付けて文字列の長さを表します。
このメソッドは、4 バイトの符号なし整数として文字列の長さを書き込んでから、その長さ分の文字をストリームに書き込みます。
このメソッドは、BinaryWriter インスタンスの現在のエンコーディングを使用して、長さのプリフィックスを持つ文字列をこのストリームに書き込みます。

投稿日時 - 2012-02-04 14:56:28

補足

申し訳ありません。質問文の05は04でした。
私の入力間違いです。

投稿日時 - 2012-02-04 17:42:21

お礼

回答ありがとうございます。
先頭についていた04は文字の長さということですね。
今後の参考にします。

投稿日時 - 2012-02-04 17:51:32

あなたにオススメの質問