帮忙看一下,要实现这样的算法怎么写(100分)

  • 主题发起人 主题发起人 zhouxiangjun
  • 开始时间 开始时间
Z

zhouxiangjun

Unregistered / Unconfirmed
GUEST, unregistred user!
FF 05 01 01 1E 01 32 05 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01

如果是 FF 05 就读取 FF 05之后的5个字节 。
05 01 就分解成 01 01 01 01 01

例子 FF 05 01 01 1E 01 32 05 01
就分解成 01 01 1E 01 32 01 01 01 01 01

各位朋友这样读取文件怎么实现 (代码)
 
有人会吗?还是我没有表达清楚
 
有人会吗?还是我没有表达清楚
 
大家帮忙看看啊
 
你说的不是很清楚,你参考这点代码吧,

const no:Integer=26; //数组长度

implementation
var d:array[1..26] of Byte=($FF,05,01,01,$1E,
01,$32,05,01,$FF,
01,$1F,07,01,$FF,
01,$1E,07,01,$FF,
01,$1F,07,01,$FF,01);
d1:array[1..100] of Byte;
new_len:Integer; //新数组长度
{$R *.dfm}

{
FF 05 01 01 1E 01 32 05 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01

如果是 FF 05 就读取 FF 05之后的5个字节 。 然后就不管吗???
05 01 就分解成 01 01 01 01 01

例子 FF 05 01 01 1E 01 32 05 01 //这里已经超过5个字节??
就分解成 01 01 1E 01 32 01 01 01 01 01
}
{
代码运行的结果:
01 01 1E 01 32 01 01 01 01 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 }
procedure TForm1.Button1Click(Sender:TObject);
var i,j:Integer;
flag:Boolean;
tstr:string;
begin
new_len:=0;
flag:=false; //符合条件标志
i:=0;
repeat
Inc(i);
if (d=$FF)and(d[i+1]=$05) then
begin
flag:=true; //符合条件标志 ....已经有数据符合条件,查找后面的数据是不是有符合05 01的数据,如果有就分解
i:=i+2; //避开$ff $05
end;
if flag then //符合条件标志 ....已经有数据符合条件,查找后面的数据是不是有符合05 01的数据,如果有就分解
begin
if (d=$05)and(d[i+1]=$01) then
begin
Inc(i);
for j:=1 to 5 do //分解数据 ..本身一位01,所以加上4个01就可以
begin
Inc(new_len);
d1[new_len]:=$01;
end;
end
else
begin
Inc(new_len);
d1[new_len]:=d;
end;
end;
until i>=no;
tstr:='';
for i:=1 to new_len do
tstr:=tstr+IntToHex(d1,2)+' ';
Edit1.text:=tstr;
end;
 
这也没什么的算法,好象就是二字节二字节的分析呀,碰到某就某。
最多考虑下如果是个大文件的,分批读到数组中。
 
谢谢,到时我我给分的
 
16進制的轉化和數據的讀取......那要看你的數據是如何來的了..
 
谢谢 zywcd 的指点,
不过我分析的是一个他人自定义的图像文件,我中从中取出转成bmp的
 
我是想把文件读入内存处理转成bmp
 
FF 05 01 01 1E 01 32 05 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 05 01 FF 04 32 01 1E 01 FF 06 01 01 01 32 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01 1E 07 01 FF 01 1F 07 01 FF 01...............................
这里只是文件的一小部分
 
请大家指点一下
我是用这个软件FlexHEX 打开他的文件看到的相关数据
从这些数据中取出转成BMP
 
提議先完全讀取出來..然後修改再存入..以前寫過讀取的代碼...看看能不能找到..
 
20 07 50 0C。。。。
要把 20 转成十进的 32个07
80个0C
其它的也是这样
 
谢谢 zhouyou155
麻烦找找,给点提示
 
好像是密码的密钥[:D]刚看了电视《暗算》
 
沒找到...DFW裡面搜索一下吧..應該有很多這方面的...
 
怎么搜啊
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
926
SUNSTONE的Delphi笔记
S
后退
顶部