procedure Tfrm_save.btn_saveClick(Sender: TObject);
var cn_file:TextFile; //这是文本文件格式,有没有16进制的文件格式????
s3:string;
s1:string;
begin
s3:='12345678';
AssignFile(Cn_file,'c:\diskinfo.sbj');
Reset(cn_file);
s1:=StrToHex(s3);
Rewrite(cn_file);
Writeln(cn_file,s1);
closefile(cn_file);
end;
function StrToHex(str:string):string;
var
I:Integer;
begin
for I:=1 to Length(str) do
begin
Result:=Result+IntToHex(Ord(str[i]),2);
end;
end;保存完后怎样用ultraedit打开看到的十六进制不对啊??应该是00 BC 61 4E才对啊,怎么是
33 31 33 32 33 33 33 34 33 35 33 36 33 37 33 38啊???
var cn_file:TextFile; //这是文本文件格式,有没有16进制的文件格式????
s3:string;
s1:string;
begin
s3:='12345678';
AssignFile(Cn_file,'c:\diskinfo.sbj');
Reset(cn_file);
s1:=StrToHex(s3);
Rewrite(cn_file);
Writeln(cn_file,s1);
closefile(cn_file);
end;
function StrToHex(str:string):string;
var
I:Integer;
begin
for I:=1 to Length(str) do
begin
Result:=Result+IntToHex(Ord(str[i]),2);
end;
end;保存完后怎样用ultraedit打开看到的十六进制不对啊??应该是00 BC 61 4E才对啊,怎么是
33 31 33 32 33 33 33 34 33 35 33 36 33 37 33 38啊???
var cn_file:TextFile; //这是文本文件格式,但也可以保存16进制的数据
s3:Integer; // 既然是16进制数据,就应该是数值而不是字符串
s1:string;
begin
s3:=12345678; // 同上
AssignFile(Cn_file,'c:\diskinfo.sbj');
Reset(cn_file);
for i:=0 to SizeOf(s3) do
s1 := s1 + Chr(PByte(Integer(@s3)+i)^);
Rewrite(cn_file);
Writeln(cn_file,s1);
closefile(cn_file);
end;用ultraedit打开文件,你看到的应该是4E 61 BC 00,因为数值是从低位保存的。
var cn_file:TextFile; //这是文本文件格式,但也可以保存16进制的数据
s3:Integer; // 既然是16进制数据,就应该是数值而不是字符串
s1:string;
i: Integer;
begin
s3:=12345678; // 同上
AssignFile(Cn_file,'c:\diskinfo.sbj');
Reset(cn_file);
for i:=0 to SizeOf(s3)-1 do
s1 := s1 + Chr(PByte(Integer(@s3)+i)^);
Rewrite(cn_file);
Writeln(cn_file,s1);
closefile(cn_file);
end;用ultraedit打开文件,除了看到4E 61 BC 00以外,还将看到末尾有0D 0A,因为写文本格式的文件时是会自动附加换行和回车符的。要完全由自己控制文件的数据,用二进制文件,或用TFileStream类。
另外问一下,用二进制文件,或用TFileStream类怎么做??
将s1 := s1 + Chr(PByte(Integer(@s3)+i)^)改为
s1 := Chr(PByte(Integer(@s3)+i)^)+s1 ;就ok了吧
SysUtils;var
s: string = '20051102';
tmp: string;
buf: array[0..3] of byte;
f: Integer;
i: integer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
for i:=0 to 3 do
begin
tmp:=Copy(s, i*2+1, 2);
buf[i]:=StrToInt(Copy(tmp, 1, 1))*16+StrToInt(Copy(tmp, 2, 1));
end;
f:=FileCreate('1.txt');
FileWrite(f, buf, sizeof(buf));
readln;
end.