[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/02/23(Fri) 13:00
投稿者名:mezashi
Eメール:
URL :
タイトル:
Binaryファイル保存で2バイトデータ
Binary形式でファイルを保存しているんですけど
2バイトで0〜65536(unsigned intみたいな)での保存が
できません。
integer形だと-32767〜32768範囲なのでだめですし、Longだと
4バイトになってしまいます。
だれかご教授お願いします。

投稿時間:2007/02/24(Sat) 19:07
投稿者名:てふ
Eメール:
URL :
タイトル:
Re: Binaryファイル保存で2バイトデータ
それは単にバイナリ値の解釈の仕方の問題だけであって
VBでも2バイトで&H0000〜&HFFFFの保存はできますよ。
しかしそれを読み込んだときVB6にはunsigned intなんて
型は存在しないのでint型に読み込むと&HFFFFを-1と解釈
してしまうだけです。
それを65536として扱いたいならint型で読み込んだ後、
long型の変数に代入し上位2バイトを0でマスクする等の
処理をいれたらいいんじゃないでしょうか。

投稿時間:2007/02/26(Mon) 09:39
投稿者名:y4yama
Eメール:
URL :
タイトル:
Re^2: Binaryファイル保存で2バイトデータ
> mezashiさん
VBでもInteger2バイトへ&H0000〜&HFFFFの代入は、できますよ。
No.8482 を読んでみましたか?

投稿時間:2007/02/26(Mon) 10:14
投稿者名:mezashi
Eメール:
URL :
タイトル:
Re^3: Binaryファイル保存で2バイトデータ
レスありがとうございます。
説明不足でした。現在LONG型のデータ(データ内容は65536まで)を
バイナリーの2バイトで保存したかったのです。
CINTを使うとオーバーフローするので、困ってます。

投稿時間:2007/02/26(Mon) 10:33
投稿者名:よねKEN
Eメール:
URL :
タイトル:
Re^4: Binaryファイル保存で2バイトデータ
> 説明不足でした。現在LONG型のデータ(データ内容は65536まで)を
65536ではなく65535までですよね?でないと2バイトには収まりません。

> バイナリーの2バイトで保存したかったのです。
> CINTを使うとオーバーフローするので、困ってます。

Integerの範囲ではないのでCIntは使えません。
要素数2のByte配列など2つのByte型変数に分割して入れて、それをバイナリーデータとして書き出してください。

http://hp.vector.co.jp/authors/VA014315/vbmidiin.htm
のサイトで公開されているWordToByte関数が参考になるかもしれません。

投稿時間:2007/02/26(Mon) 11:43
投稿者名:mezashi
Eメール:
URL :
タイトル:
解決
> http://hp.vector.co.jp/authors/VA014315/vbmidiin.htm
> のサイトで公開されているWordToByte関数が参考になるかもしれません。


サイトが参考になりました。
解決しました。ご教授ありがとうございました。