バイト配列と数値を変換するには?

解決


H_N  2003-07-10 13:41:50  No: 107745  IP: [192.*.*.*]

バイト配列から数値への変換を行いたいのですが、やり方が分かりません。
バイト配列は各種integer、single,byte等の各種データが格納されていて
います(いわゆる構造体です。)
ここから、例えば1〜2バイト目はinteger型の変数に格納、3〜6バイト目は
single型の変数に格納といったことをVB6.0で行いたいのです。

バイト配列を一旦バイナリファイルにしてから、TYPE RECORDを使って
GETでファイルを読み込めばやりたいことはできると思うのですが、
もっと良い方法を教えて下さい。

編集 削除
batchman  2003-07-11 08:59:37  No: 107746  IP: [192.*.*.*]

RtlMoveMemoryAPIを使いましょう。

Dim intValue As Integer
Dim sngValue As Single

Call RtlMoveMemory(intValue, bytArray(0), 2)
Call RtlMoveMemory(sngValue, bytArray(2), 4)

編集 削除
H_N  2003-07-11 14:19:56  No: 107747  IP: [192.*.*.*]

batchman 様
ありがとうございます。
RtlMoveMemoryというAPIは知りませんでした。
APIビューアやMSDNのキーワード検索ではこのAPIは出てきません。
MSDNのフリーワード検索ではヒットしました。
Public Declare Sub RtlMoveMemory Lib "kernel32" Alias "RtlMoveMemory" 
(Destination As Any, Source As Any, ByVal Length As Long)
と宣言すれば良いのですね。
しかし、APIビューアやMSDNのキーワード検索で出ないのには何か訳があるのでしょうか。

編集 削除
魔界の仮面弁士  2003-07-11 15:44:50  No: 107748  IP: [192.*.*.*]

RtlMoveMemoryではなく、CopyMemory や MoveMemory という
APIであれば、見つける事ができると思います。

CopyMemory等の関数定義を、ヘッダファイルやAPIビューワなどで
調べてみるとわかるかと思いますが、結局は、これらは
「RtlMoveMpery」という関数の別名(エイリアス)に過ぎないのです。

そのため、VBから利用さる際には、CopyMemoryなどのAPIをまとめて、
本来の名前(?)である「RtlMoveMemory」と呼ばれる事がよくあります。

一方、C言語などでは、ヘッダファイルによって、
「CopyMemory」などの別名が既に定義済みであるため、
元々の内部名である RtlMoveMemory という関数名で呼ばれることは、
(VBに比べると)さほど多く無いようです。

編集 削除
H_N  2003-07-14 11:46:18  No: 107749  IP: [192.*.*.*]

魔界の仮面弁士様
疑問に答えて頂きましてありがとうございました。
エイリアスなのですね。

編集 削除