比如一个exe文件的第一个字节的16进制的值是"AF",用label显示出来"AF"!var
  af, bf: TFileStream;
  buffer: Integer;
  SwfFileSize: Int64;
begin
  af := TFileStream.Create('e:\a.exe', fmOpenRead);
  af.Seek(1, soFromBeginning);
  af.Read(buffer, 1);
  Label1.Caption := inttostr(buffer);
end;我用上面的方法显示出来的是一个数字,我把这个数字转换为16进制后发现与a.exe文件的第一个字节的16进制的值是不相同!不知道该怎么写!请大家帮帮我!

解决方案 »

  1.   

    你的写错了吧:
    var
      af, bf: TFileStream;
      buffer: Byte;//第一个字节吧,一个字节8位,好象我没有搞错吧,用Byte作Buffer才行
      SwfFileSize: Int64;
    begin
      af := TFileStream.Create('e:\a.exe', fmOpenRead);
      af.Seek(0, soFromBeginning);//文件位置是从0开始
      af.Read(buffer, SizeOf(Buffer));//读出缓冲的大小为一个Byte的大小
      Label1.Caption := inttostr(buffer);
    end;
      

  2.   

    blazingfire(烈焰) :谢谢你了!解决了!
    我还有一个问题!
    用"FF"替换第一个字节的16进制的值,该怎么写啊!
    谢谢!
      

  3.   

    再用intToHex显示十六进制
      

  4.   

    楼上的最后一举错了,
    Label1.Caption := inttostr(buffer);
    应该是
    label1.caption:=inttohex(buffer,2);