掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バイナリとTypeについて (ID:126966)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
バイナリファイルに初めて挑戦しています。 仮にSAMPLE.datというファイルについて バイナリエディタで表示されたデータが次のような場合 00000000 | 00 00 00 01 | 00 00 00 02 | 00 00 00 03 | Option Explicit Private Type SAMPLE LONG1 As Long LONG2 As Long LONG3 As Long End Type Private Sub Command1_Click() Dim IN_DATA As SAMPLE Open "SAMPLE.dat" For Binary As #1 Get #1, 1, IN_DATA Close #1 Debug.Print "LONG1 = " & Hex(IN_DATA.LONG1) Debug.Print "LONG2 = " & Hex(IN_DATA.LONG2) Debug.Print "LONG3 = " & Hex(IN_DATA.LONG3) Debug.Print "LONG1 = " & IN_DATA.LONG1 Debug.Print "LONG2 = " & IN_DATA.LONG2 Debug.Print "LONG3 = " & IN_DATA.LONG3 Enn Sub で確認したところ LONG1 = 1000000 LONG2 = 2000000 LONG3 = 3000000 LONG1 = 16777216 LONG2 = 33554432 LONG3 = 50331648 となります。 LONG1 = 1 LONG2 = 2 LONG3 = 3 LONG1 = 1 LONG2 = 2 LONG3 = 3 を期待していたのですが、まったく予期しない結果でした。 使いたいデータは、10進数で1・2・3なのですが、これでは使えません。 多分Longの上下が自分で期待していたものとByte単位で逆になっていると 思われますが、この場合、どうやって期待通りの値を得ればよいのでしょうか。 1.Get #1, 1, IN_DATA あたりが間違っているのか。 2.Type の宣言が間違っているのか。 3.かなりややこしいビット演算で変換する必要があるのか。 こんへんのヒントだけでもお願いできませんでしょうか。 3.であれば現在の実力では、ちょっと無理かなあって思いますが、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.