delphi – 文件的十六进制视图
发布时间:2020-12-15 09:44:54 所属栏目:大数据 来源:网络整理
导读:我正在使用Delphi 2009. 我想在备忘录中查看文件(十六进制)的内容. 我正在使用此代码: var Buffer:String;begin Buffer := ''; AssignFile(sF,Source); //Assign file Reset(sF); repeat Readln(sF,Buffer); //Load every line to a string. TempChar:=StrT
|
我正在使用Delphi 2009.
我想在备忘录中查看文件(十六进制)的内容. 我正在使用此代码: var
Buffer:String;
begin
Buffer := '';
AssignFile(sF,Source); //Assign file
Reset(sF);
repeat
Readln(sF,Buffer); //Load every line to a string.
TempChar:=StrToHex(Buffer); //Convert to Hex using the function
...
until EOF(sF);
end;
function StrToHex(AStr: string): string;
var
I,Len: Integer;
s: chr (0)..255;
//s:byte;
//s: char;
begin
len:=length(AStr);
Result:='';
for i:=1 to len do
begin
s:=AStr[i];
//The problem is here. Ord(s) is giving false values (251 instead of 255)
//And in general the output differs from a professional hex editor.
Result:=Result +' '+IntToHex(Ord(s),2)+'('+IntToStr(Ord(s))+')';
end;
Delete(Result,1,1);
end;
当我将变量“s”声明为char(我知道char最多为255)时,我得到的结果十六进制值高达65535! 当我将变量“s”声明为字节或chr(0).. 255时,它会输出不同的十六进制值,与任何十六进制编辑器相比! 这是为什么?我怎样才能看到正确的值? 检查图像的差异. 第1张图片:Professional Hex Editor. 第二张图像:功能输出到备忘录. ? 谢谢. 解决方法
在Delphi 2009中,Char与WideChar是一样的,即Unicode字符.宽字符占用两个字节.你想使用AnsiChar.在Delphi 2009之前(即在Unicode Delphi之前),Char和AnsiChar是一样的.
此外,您不应该使用ReadLn.您将文件视为具有文本文件行结尾的文本文件!这是一般文件!它可能根本没有任何文本文件行结尾! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
