怎么把文本文件转换成二进文件 我只知道2二进制文件就是关于0和1的一些东西,文本文件是以字符的ascii形式存储的,但具体怎么做却不知到,还请大家多多指点,谢谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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、其实,两种文件皆为二进制文件,只是方式不同吧了。 谢谢大家帮忙。是我没叙述清楚。我的意思是浮点数据以文本的形式储存在文本文件中,比如data.txt//----------21.44424.663421.2370.5656-523652.37//----------在这里21.44以字符方式存储,占5字节,而变为二进制问件后以Extended的形式存储,占10字节 我理解你的意思了你是想将数据以2进制的方式来存储这样就不会出现21.44424.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字节的浮点书它就会把前四个字节的数据读入并转化为相应的浮点数据 因为具体的字符编码和数据字节数我已经忘了,这样写不知道你能明白了吗? 把文本文件当成二进制来看就行了!没有什么区别,只是二进制中的一些数字,不能使用ASCII 来正确显示! //参考如下代码~~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 }//Exampleprocedure TForm1.Button1Click(Sender: TObject);begin TextToExtended('c:\temp\data.txt', 'c:\temp\data.ext'); ExtendedToText('c:\temp\data.ext', 'c:\temp\temp.txt')end; 无论什么数据都强制为字节数组写入文件就行了,如aa:Extended;Stream.write(Byte(@aa),sizeof(Extended)); 菜鸟 当IShellFolder的内容改变时,怎样通知IShellView显示改变后的内容,需要发消息还是什么?谢谢 将数据库中数据导成excel时出错!!!急~~ ftp客户端,服务端程序最简单的模型如何实现? 我想每页都显示一定的内容,又不想设为页角(pagefoot)和页眉,如何做,在线等! 问一个问题,关于对话框的 问DELPHI中有没有制作安装的打包程序呢? dbgrid 下拉菜单疑问。 怎样作出象 VB那样的消息框 简单问题求助:如何在一按钮上单击左键即下拉菜单 哪里能下到:fastreport 3.05 with full source? 狂晕啊,这是为什么?
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、其实,两种文件皆为二进制文件,只是方式不同吧了。
我的意思是浮点数据以文本的形式储存在文本文件中,比如
data.txt
//----------
21.44
424.663
421.237
0.5656
-523652.37
//----------
在这里21.44以字符方式存储,占5字节,而变为二进制问件后以Extended的形式存储,占10字节
这样就不会出现
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字节的浮点书它就会把前四个字节的数据读入并转化为相应的浮点数据
因为具体的字符编码和数据字节数我已经忘了,这样写不知道你能明白了吗?
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;
如aa:Extended;Stream.write(Byte(@aa),sizeof(Extended));