从文件中影射到内存中,文件中数据为‘004E’,内存中存为‘0,0,4,E,’,我怎样才能 使他存为‘00,4E’

解决方案 »

  1.   

    你的文件中存储的是文本文件吧,你载入文本后内存中自然是文本模式。你应当在存储文本的时候就存储成16进制的。
    因此你只有自己写代码来进行转换了。读入每一个字节,然后使用StrToInt(delphi7)就可以了。
    s: char;
    i: Integer;s:='2E';
    i:=strtoint('0x'+s);
    showmessage(inttostr(i));
    显示46
      

  2.   

    文本文件怎样存为16进制呢,(我说明白些,我是通过解密把数据存到文本文件中的,然后我要在程序里使用解密后的数据,我就用内存影射文件,结果就是“004E”应该是“00,4E”却变成了“0,0,4,E”,我用的^BYTE指针强制转换也不行),高手救命!!!!
      

  3.   

    补充一下,我存为tt.hex格式也不行,而且还有$13,$10,换行回车符
      

  4.   

    看来你对数据格式全然不了解。
    你最好把tt.hex的内容贴出来,看看有没有人帮你写出代码来。
      

  5.   

    var
      Str, tStr: String;
      hFile: TextFile;
      Len: Integer;
      Buf: PChar;
    begin
      AssignFile(hFile,'File Name');
      Reset(hFile);
      while not Eof(hFile) do
      begin
        ReadLn(hFile,tStr);
        Str:=Str+tStr;
      end;  Len:=Length(Str) div 2;
      GetMem(Buf,Len);
      HexToBin(PChar(Str),Buf,Len);    //Buf里即为想要的数据  //做你想做的事  FreeMem(Buf);
    end;
      

  6.   

    楼主问题问得太不清楚了。
    数据存储肯定是2进制的,无论内存还是硬盘。
    只不过显示的时候有区别而已。
    比如一个文本文件,内容为一个字节 '1'
    表示为16进制为0x31,表示为8位2进制为00110001,表示为Asc码为'1';
    Windows 32位系统内存中一般存储为0x31 0x00 0x00 0x00