掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バイトの80〜FFを文字に変換するには? (ID:77594)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 読み込んだバイナリファイル(jpgのファイルを使ってます)はShift_JISなのでしょうか? Shift_JISでもUnicodeでもありません。そもそも、jpgファイルの中身は テキストではありませんから、対応する文字コードも無い、という事になるでしょう。 > いろいろといじっていたところ&H80以上のときに2バイトくっつけて変換すると全角がでるとかが分かってきたので Shift_JISの場合は、&H81〜&H9Fおよび&HE0〜&HEFの範囲の場合に、 直後の1バイト(&H40〜&H7E、&H80〜&HFCの範囲をとります)とあわせて、 2バイトで1文字が表現される仕様になっています。 なお、1バイトで1文字が表現されるのは、以下の範囲です。 &H21〜&H7Eの範囲:いわゆる英数字 (JIS X 0201 ローマ字) &HA1〜&HDFの範囲:いわゆる半角カナ(JIS X0201 片仮名) &H00〜&H20、&H80:制御文字(空白やタブや改行などがここに含まれます) これ以外の未定義値の場合は、Chr関数で変換した際にデータが化ける可能性があります。 > というようにしたのですがこれはどこがいけないのでしょう? これなら、最初からBinaryモードではなく、Inputモードで開けばよいかと思います。 指定したバイト位置から読み込みたい、という事であれば、 Dim aaa() As Byte ReDim aaa(読み込みたいバイト数 - 1) Get #1, 読み込み開始位置, aaa のようにすれば、Byte配列に、バイトデータを一度に読み込ませる事ができます。 それをさらに、Debug.Print等で文字列化して読みたいのであれば、 Debug.Print StrConv(aaa, vbUnicode) '元のファイルがShift_JISテキストだった場合 Debug.Print CStr(aaa) '元のファイルがUnicodeテキストだった場合 のようにすればOKです。 もし、Shift_JIS/Unicode以外のテキストファイルを扱いたい場合は、 「ADODB.Streamオブジェクト」という物を使えばOKです。 > 出力されたファイルをバイナリエディタで開いて元のバイナリファイル(jpg)と比較しています。 バイナリファイルを作成する場合は、通常、String型は使えません。 データをByteで保持しておき、それをPut#するのが一般的ですね。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.