首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么读取16进制文件?

2012-02-10 
如何读取16进制文件?急急在论坛中也没找到合适的答案,只好重问一下了。我要做的事:1、打开一个16进制的文件,

如何读取16进制文件?急急
在论坛中也没找到合适的答案,只好重问一下了。

我要做的事:
1、打开一个16进制的文件,里面内容如:……E1   81   D9   DF……
2、从里面匹配到字符串,如:31   99   F3
3、定位该字符串的位置,找到其前后两个“E1”的位置
4、将这两个E1中的字符串拷贝出来,保存入新的txt文件中。

好复杂啊,有没有高人指点一下,给出代码最好!

[解决办法]
http://download.csdn.net/source/160432
[解决办法]
一个例程, 将F:\1.HEX中符合条件的字符串写入F:\1.TXT中:
procedure TForm1.Button1Click(Sender: TObject);
var
iFile : Integer;
iSize : Integer;
sData : String;
sOut : String;
iPos : Integer;
iStart: Integer;
iEnd : Integer;
begin
iFile := FileOpen( 'F:\1.HEX ', fmOpenRead);
if iFile <> -1 then
begin
iSize := FileSeek(iFile, 0, 2);
FileSeek(iFile, 0, 0);
SetLength(sData, iSize);
FileRead(iFile, SData[1], iSize);
FileClose(iFile);
sData := AnsiReplaceStr(sData, #13#10, ' ');
sOut := ' ';
iPos := 1;
repeat
iPos := PosEx( '31 99 F3 ', sData, iPos);
if iPos <= 0 then break;
iStart := iPos - 1;
while iStart > 0 do
begin
if Copy(sData, iStart, 2) = '51 ' then break;
dec(iStart);
end;
iEnd := PosEx( '51 ', sData, iPos);
if (iStart > 0) and (iEnd > 0) then sOut := sOut + Copy(sData, iStart, iEnd - iStart + 2) + #13#10;
inc(iPos);
until False;
iFile := FileCreate( 'F:\1.TXT ');
if iFile <> -1 then
begin
FileWrite(iFile, sOut[1], Length(sOut));
FileClose(iFile);
end;
end;
end;

热点排行