1

から4バイトを取得したい

Source : Array[0..500] of Byte;

どこ

c : integer; // Start Point

v : LongInt;

しかし

Move(Source[c], v, 4);

1バイトしか返されません。私のせいはどこですか?

再度、感謝します。

4

2 に答える 2

5

このソースは完全に正常に機能します。cただし、最初のバイト(インデックスにあるバイト)のみに。以外の値が含まれている場合は、1バイトのみを返すように見える場合があります0

Sertac Akyuzによってすでに提案されているこの代替手段は、同様に正常に機能します。

v := PLongInt(@Source[c])^;
于 2012-11-30T00:37:15.937 に答える
2

移動が失敗しているとは思えません。

このコードを試してください:

procedure TForm1.Button1Click(Sender: TObject);
var
  source: array[0..500] of Byte;
  C: Integer;
  V: LongInt;
begin
  source[0] := $55;
  source[1] := $55;
  source[2] := $55;
  source[3] := $55;
  C := 0;
  Move(Source[C], V, SizeOf(V));
  ShowMessage(IntToStr(V));
end;

メッセージに番号1431655765($ 55555555)が表示されます。

于 2012-11-30T00:39:04.603 に答える