如何把文件里的数据读出来? ( 积分: 77 )

  • 主题发起人 主题发起人 bbcock
  • 开始时间 开始时间
B

bbcock

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ultredit打开文件,里面有4个字节的数据: 000004a7 .把这4个字节直接用计算器从16进制转成10进制,得到:1191 。里面还有6个字节的数据: 00000637cfe8 .把这6个字节直接用计算器从16进制转成10进制,得到:104321000 。
如何用delphi直接读出1191和104321000呢?
 
我用ultredit打开文件,里面有4个字节的数据: 000004a7 .把这4个字节直接用计算器从16进制转成10进制,得到:1191 。里面还有6个字节的数据: 00000637cfe8 .把这6个字节直接用计算器从16进制转成10进制,得到:104321000 。
如何用delphi直接读出1191和104321000呢?
 
四个字节的可以直接读出来,6个字节就不行了, 再说了6个byte是多少位的数字?
var
a: Integer;
f: file;
begin
assignfile(f, 'aaa.dat');
reset(f, 1);
blockread(f, a, sizeof(a));
closefile(f);
end;
 
form1.caption:=Format('%d',[$000004a7]);
form1.caption:=Format('%d',[$00000637cfe8]);
 
什么意思,没有看懂题目
 
我是要从文件里读出数据,我是这么做的:
var
g:tfilestream;
buf:byte;
i3:string;
x:double;
begin
g:= TfileStream.Create(opendialog1.FileName, fmOpenRead);
g.Seek(2902,sofrombeginning);
g.Read(buf,1); // 读出1字节
i3 :=IntToHex(buf,2);
g.Read(buf,1); // 读出1字节
i3 :=i3+IntToHex(buf,2);
g.Read(buf,1); // 读出1字节
i3 :=i3+IntToHex(buf,2);
g.Read(buf,1); // 读出1字节
i3 :=i3+IntToHex(buf,2);
g.Read(buf,1); // 读出1字节
i3 :=i3+IntToHex(buf,2);
g.Read(buf,1); // 读出1字节
i3 :=i3+IntToHex(buf,2);
x:=strtofloat('$'+i3)/1000000;
。。。。。。
end;


但这样做程序会抱错,例如:“$00063bde9404”is not a valid floating point value 。有什么办法把这么大的数据读出来吗?

 
用int64啊
 
一定要将数据以数字的形式读出来的话,会涉及到硬件的数的表示问题,超过硬件的表示就会不准确或报错,你可以用字符的方式读出来,不运算的话,它还不一样是数字吗。
 
呵呵,16进制都读出来了,转换成10进制很难吗?到处都有16进制向10进制转换的数学公式啊
 
多人接受答案了。
 
后退
顶部