|
▼わさび さん:
こんばんは。
>>ファイル内で0201Hの2バイトは、Integer型の変数に読み込まれると、
>>Integer型の内部では0102hとして格納されます。
>>
>>よって、16進数で0102は、10進数の258ですから、そう表示されるのですが・・。
>>
>>バイナリーファイルというのは、設計によっては、0201Hに意味がある場合も
>>ありますから、Integer型で読み込むというのは、特殊な場合に限りますよ!!
>
>Byte型は16進数、Integer型は10進数…
この表現・・・、まだ違います。
VBAでは、Byte型でもInteger型でも
16進表記、10進表記のいずれも可能です。
そもそも
>Byte型は16進数、Integer型は10進数…
こういう区別の仕方をしてはいけません。
これは、表記の仕方の違いです。
私の説明にも問題があったかもしれません・・・、反省。
VBAがこういうデータ型の問題がわかりずらいのは、
簡単に型変換してくれることも理由のひとつだと思っているのですが・・。
話がちょっとずれますが例えば、
dim aa as integer
dim bb as string
aa=5
bb="text" & aa
これもaaを型変換してくれるのでエラーになりませんよね?
私がDOS時代に使っていたBASICでは、「型が違う」というエラーになりました。
VBAから、プログラミングを始めてあまり細かい意味は考えずに使っている間は
便利なんですが、あるとき不思議に感じはじめるとやっかいですよね!!
今回の問題は、ファイルの中身が実際にどのようになっているのか?
なんてことは、VBAではあまり考えなくてもすんでいる方は
沢山いらっしゃると思います。
(私もVBAを始めてからはそうです)
再度、似たような投稿があったときには
もう少しわかりやすい説明ができるように
したいと思いますが、Byte型はある程度
決まった使用方法だけ(今回のバイナリファイルのデータ取得での使用方法等)
押さえておいてください。
|
|