我只知道2二进制文件就是关于0和1的一些东西,文本文件是以字符的ascii形式存储的,但具体怎么做却不知到,还请大家多多指点,谢谢了。

解决方案 »

  1.   

    Sir,
        1、关于二进制文件,如1Byte整数存1Byte(0~255,-128~127);2Bytes短整数存2Bytes(0~65535,-32768~32767);4Bytes长整数存4Bytes(0~2^32-1,-2^31~2^31-1);4Bytes单精度浮点数存4Bytes;8Bytes单精度浮点数存8Bytes......,即保存在磁盘上的长度与内存一致。
        2、关于关于文本文件,每个ASCII字符存1Byte,如“abc123.456”存10Bytes。
        3、其实,两种文件皆为二进制文件,只是方式不同吧了。
      

  2.   

    谢谢大家帮忙。是我没叙述清楚。
    我的意思是浮点数据以文本的形式储存在文本文件中,比如
    data.txt
    //----------
    21.44
    424.663
    421.237
    0.5656
    -523652.37
    //----------
    在这里21.44以字符方式存储,占5字节,而变为二进制问件后以Extended的形式存储,占10字节
      

  3.   

    我理解你的意思了你是想将数据以2进制的方式来存储
    这样就不会出现
    21.44
    424.663
    这样的长短不齐了吧。
    那么文件的格式是(假设 424.663 一个浮点数据4byte)
    FF010101 这样就是一个2进制的浮点数据.
    er如果是文本格式
    则424.663  是7个字符 如果一个字符1个字节的话  就是7个字节
    计算机表示就是  01 23 45 67 89 AB CD 
                    /  /  /  /  /  /  /
                    4  2  4  。 6  6 3
    只不过文本以文本格式打开时,就把这些数据自动按照编码再次转化成相应的字符。
    而 二进制的文件读的时候 仍是这些2进制数据,如果从文件开头读一个4字节的浮点书它就会把前四个字节的数据读入并转化为相应的浮点数据  
    因为具体的字符编码和数据字节数我已经忘了,这样写不知道你能明白了吗?
      

  4.   

    把文本文件当成二进制来看就行了!没有什么区别,只是二进制中的一些数字,不能使用ASCII 来正确显示!
      

  5.   

    //参考如下代码~~
    procedure TextToExtended(mTextFile, mExtendedFile: string);
    var
      vStringList: TStringList;
      vFileStream: TFileStream;
      I: Integer;
      E: Extended;
    begin
      if not FileExists(mTextFile) then Exit;
      vStringList := TStringList.Create;
      vFileStream := TFileStream.Create(mExtendedFile, fmCreate);
      try
        vStringList.LoadFromFile(mTextFile);
        for I := 0 to vStringList.Count - 1 do
        begin
          E := StrToFloatDef(vStringList[I], I);
          vFileStream.Write(E, SizeOf(E));
        end;
      finally
        vStringList.Free;
        vFileStream.Free;
      end;
    end; { TextToExtended }procedure ExtendedToText(mExtendedFile, mTextFile: string);
    var
      vStringList: TStringList;
      vFileStream: TFileStream;
      E: Extended;
    begin
      if not FileExists(mTextFile) then Exit;
      vStringList := TStringList.Create;
      vFileStream := TFileStream.Create(mExtendedFile, fmOpenRead);
      try
        while vFileStream.Read(E, SizeOf(E)) > 0 do
          vStringList.Add(FloatToStr(E));
        vStringList.SaveToFile(mTextFile);
      finally
        vStringList.Free;
        vFileStream.Free;
      end;
    end; { ExtendedToText }//Example
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      TextToExtended('c:\temp\data.txt', 'c:\temp\data.ext');
      ExtendedToText('c:\temp\data.ext', 'c:\temp\temp.txt')
    end;
      

  6.   

    无论什么数据都强制为字节数组写入文件就行了,
    如aa:Extended;Stream.write(Byte(@aa),sizeof(Extended));