二进制文件的读取?(50分)

  • 主题发起人 主题发起人 雷电
  • 开始时间 开始时间

雷电

Unregistered / Unconfirmed
GUEST, unregistred user!
如果一个二进制文件中,前2个字节为“0119”,表示某变量为十进制的1*256+1*16+9

我用下面的读,结果变成了“1901”,即i=1*4096+9*256+1
var i:smallint;
f:=Tfilestream.Create('aaa', fmOpenRead);
f.Read(i,2);
f.free;
那我该如何读取至一个整型中?分两个字节读到byte中,然后byte[0]*256+byte[1],这样是可以,但我觉得太麻烦,请问一下该怎么做
 
可以这样
var
i: PWord;
begin
New(i);
f:=Tfilestream.Create('aaa', fmOpenRead);
f.Read(PByte(i)^, 1);
Inc(PByte(i));
f.Read(PByte(i)^, 1);
f.free;end;
 
fread(i,2);
swap(i);
 
呵呵,学习了
 
呵呵,不知道swap函数,自己写了一个
function XHiLoWord(s: Word): Word;
asm
mov ax, s
xchg ah, al
mov result, ax
end;
 
后退
顶部