var
  i: integer;
  ABuf: array of Byte;
  ATemp: Longword;
begin
  ATemp := $EB90EB90;  SetLength(ABuf, 4);
  PLongword(@ABuf[0])^ := ATemp;  for i := 0 to Length(ABuf) - 1 do
    ShowMessage(IntToStr(ABuf[i]));
end;
我这里ShowMessage显示的数据为144 235 144 235,但是我仔细计算了一下,ATemp 如果用位运算计算的话应该是235 144 235 144,这是什么原因啊,
我要的是在ABuf存放235 144 235 144,各位帮忙看看

解决方案 »

  1.   

    Var
      Arr: Array[1..4] Of Byte;
      I, J: Integer;
      APo: Pointer;
    begin
      for I:= 1 to 4 do
        ListBox1.Items.Add(Format('数组第%d个元素的地址:%d',[ I,  (Integer(@Arr[i]))]));
      J := $01020304;
      For I:= 0 to 3 do
        ListBox1.Items.Add(Format('整数($01020304;)第%d个字节的内容:%d',[ I, Byte(Pointer(Integer(@J)+ I)^)]  ));
    end;
    运行一下这段代码,希望对你有所帮助
      

  2.   


    Var
      Arr: Array[1..4] Of Byte;
      I, J: Integer;
      APo: Pointer;
    begin
      for I:= 1 to 4 do
        ListBox1.Items.Add(Format('数组第%d个元素的地址:%d',[ I,  (Integer(@Arr[i]))]));
      J := $01020304;
      For I:= 0 to 3 do
        ListBox1.Items.Add(Format('整数($01020304;)第%d个字节的内容:%d',[ I, Byte(Pointer(Integer(@J)+ I)^)]  ));
    end;
    二者的存放方式有区别,运行一下这段代码,希望对你有所帮助
    看不到重贴一下。。