Topen:=OpenFIle(Filename,Struct,Of_ReadWrite );if (Topen<>0) and (not ScanFileStop)then begin topen2 :=CreateFileMapping(Topen,nil,PAGE_READWRITE,0,Filesize,nil); end; if Topen2<>0 then begin P:= MapViewOfFile(topen2, FILE_MAP_Read, 0, 0, Filesize); b:=Pbyte(Longint(p)+1000); showmessage(b^); 我想读取的内容,全部转换成hex要怎么做啊
begin
topen2 :=CreateFileMapping(Topen,nil,PAGE_READWRITE,0,Filesize,nil);
end;
if Topen2<>0 then begin
P:= MapViewOfFile(topen2, FILE_MAP_Read, 0, 0, Filesize);
b:=Pbyte(Longint(p)+1000);
showmessage(b^);
我想读取的内容,全部转换成hex要怎么做啊
你上面的代碼會慢嗎?? 你現在是想轉成HEX還是上面的代碼加載很慢??
也许
var
pc: PCardinal;
cdnl: Cardinal;
str: String;
count, s: Integer;
begin
...{可能的其他操作}
str:= '';
if filesize mod 4 = 0 then
s:= filesize div 4;
else
begin
...
end;
{byte 到 cardinal 需要除以4 吧。没有给出字节不对齐的情况。}
{需要你自己去判断filesize是否能被4完全整除,并据此做相应处理。}
...{可能的其他操作}
for count:= 0 to s - 1 then pc:= p;
cdnl:= Cardinal(pc^);
// cdnl:= Cardinal((p+ count)^);
//此时 pc可不用。也许。
str:= str+ IntToHex(cdnl);
inc(pc);
end;
{如果是在函数中也许你需要返回str。}
//Result:= str;
...{可能的其他操作}
end;
IntToHex(Value: Int64; Digits: Integer): string;
当中:
Value是要转换的整数,Digits是转换结果允许的最少位数。