A1 A1 20 0D 0A A1 A1 0D 0A有一文本文件其前面的一段16进制字符串如上如何对这段字符串进行操作 修改 删除  ?

解决方案 »

  1.   

    当一般的字符串操作就是了,没有什么不妥啊,或者用pchar来操作吧。
      

  2.   

    var 
    file1:Tstrings;
    i:integer;
     begin
        file1:=Tstringlist.Create;
        file1.LoadFromFile(filename);
        assignfile(txtfile,filename);
        rewrite(txtfile);
      for i:=0 to file1.Count-1 do
       begin
           if trim(file1.Strings[i])<>'' then
             writeln(txtfile,file1.strings[i]);
       end;
       closefile(txtfile);
       file1.Free;
    我用以上的一段程序去除文本文件里面的多余的空行对于一般的空行可以去掉但是有一些是去不掉的具体的16进制的代码如上 如何操作?
      

  3.   

    我看了看,用16进制做了做(ultraedit)
    A---41,1---31,中间的空格是---20,2-----32,0----30,D----44,等等,看来就是16进制吧
      

  4.   

    度取和以十六进制显示文件    
      read a binary file and display the byte values as ASCII? 
    author:P.BelowtypeTDisplayProc = procedure(const s: string) of object;procedure ShowBinary(var Data; Count: Cardinal; DispProc: TDisplayProc);implementation procedure ShowBinary(var Data; Count: Cardinal; DispProc: TDisplayProc);varline: string[80];i: Cardinal;p: PChar;nStr: string[4];constposStart = 1;binStart = 7;ascStart = 57;HexChars: PChar = '0123456789ABCDEF';beginp := @Data;line := '';for i := 0 to Count - 1 dobeginif (i mod 16) = 0 thenbeginif Length(line) > 0 thenDispProc(line);FillChar(line, SizeOf(line), ' ');line[0] := Chr(72);nStr := Format('%4.4X', [i]);Move(nStr[1], line[posStart], Length(nStr));line[posStart + 4] := ':';end;if p[i] >= ' ' thenline[i mod 16 + ascStart] := p[i]elseline[i mod 16 + ascStart] := '.';line[binStart + 3 * (i mod 16)] := HexChars[(Ord(p[i]) shr 4) and $F];line[binStart + 3 * (i mod 16) + 1] := HexChars[Ord(p[i]) and $F];end;DispProc(line);end; procedure TForm1.Display(const S: string);beginMemo1.Lines.Add(S);end;procedure TForm1.Button1Click(Sender: TObject);varms: TMemoryStream;beginif Opendialog1.Execute thenbeginms := TMemoryStream.Create;tryms.LoadFromfile(OpenDialog1.FileName);ShowBinary(ms.Memory^, ms.Size, Display);finallyms.Freeend;end;end;