dポイントプレゼントキャンペーン実施中!

VB6を使用して、バイナリファイルをバイナリデータとして文字列にとりたいのですが、全角文字が絡んだ時の処理がうまくいきません。

バイナリファイルをString型の変数に丸ごと読み込んで、後は何バイトから何バイト目を抜き取り数値に変換…という処理をしようとしています。
本来は、バイナリでファイルをオープンして、Getコマンドで取得するのが手っ取り早いのですが、ファイルアクセス回数を減らすため、このような面倒な方法をとっております。

そこで仮に、

dim test as string
dim i as integer

test = "aあ" & chr(1) & "0 "

For i = 1 to 6
Debug.Print Asc(Strconv( _
MidB(Strconv(test,vbFromUnicode),i,1), _
vbUnicode))
Next

のようなソースを作ってみました。(本来は文字列は数100KByte…)

しかしながら、この方法ですと上の例では2Byte目、つまり「あ」の文字の1Byte目が「&H00」になってしまいます。その次は「&HA0」、他の箇所も問題ないのですが…

おそらくは根本的に違う方法で解決すべきではないかと思うのですがその方法がわかりません。

なお、この格納データはバイナリデータなので、意図的に全角文字にしていくてもその値によって(偶然)全角文字になったり制御文字になったりしますので前もって全角文字に対する処理は難しいと考えてます。

質問の仕方が良くなく、質問の内容がなかなかご理解いただけないとは思いますが、ご存知の方、ご経験者の方、ご教授お願いいたします。

A 回答 (1件)

byte配列を使用するべし

    • good
    • 0
この回答へのお礼

やはりByte配列を使うしかありませんか…
ちょっとデータのサイズが大きかったりで、Byte配列を使うと処理がより煩雑になって、処理のスピードアップには結びつかなかったもので、何か手はないかと考えたのですが…
しかし、todo36様のアドバイス、参考にさせてもらいました。

アドバイスありがとうございました。

お礼日時:2003/10/27 11:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!