求将二进制文件转为文本文件的方法
现有一个由文本文件(99%是数字,其余是字母)转换成(不知其用何种方法)的二进制文件,求转成文本文件的VB源码或小程序,如实现再加分。我所指的文本文件是可以用记事本打开的...
现有一个由文本文件(99%是数字,其余是字母)转换成(不知其用何种方法)的二进制文件,求转成文本文件的VB源码或小程序,如实现再加分。
我所指的文本文件是可以用记事本打开的明码TXT文件,而二进制的是打开后为乱码。因特殊原因,不能向外提供该文件。本人对VB知道一点,用二进制打开GET再保存没解决。急!!!还没人能做啊???? 展开
我所指的文本文件是可以用记事本打开的明码TXT文件,而二进制的是打开后为乱码。因特殊原因,不能向外提供该文件。本人对VB知道一点,用二进制打开GET再保存没解决。急!!!还没人能做啊???? 展开
4个回答
展开全部
faint,岂有此理...
可以用十六进制显示并存入txt文件,如下面的方法
但这绝对是一个愚蠢的主意。
-------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
const BUF_SIZE=1024;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f:file of byte;
implementation
{$R *.DFM}
function Str2Hex(const data: array of byte; len: integer): string;
const
Hex:array[0..15] of char='0123456789ABCDEF';
var
i: Integer;
begin
setlength(result,length(data)*2);
for i := 0 to Len-1 do
begin
result[i*2+1]:=Hex[data[i] shr 4];
result[i*2+2]:=Hex[data[i] and $F];
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NumRead:integer;
b:array[1..BUF_SIZE] of byte;
s: string;
begin
assignfile(f,'T0105.101');
Reset(f);
repeat
BlockRead(f,b,BUF_SIZE,NumRead);
if NumRead=0 then break;
s:=Str2Hex(b,NumRead); //将每个字节以16进制表示
Memo1.Lines.Add(s);
until (NumRead = 0);
closefile(f);
Memo1.Lines.SaveToFile('binfile.txt');
end;
end.
就是把图片编为十六进制,然后再用解码程序解成 2进制,把图象再显示出来。
只是这个解码的程序没搞定,
编码的程序如上。
没分了,有了再给。
可以用十六进制显示并存入txt文件,如下面的方法
但这绝对是一个愚蠢的主意。
-------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
const BUF_SIZE=1024;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f:file of byte;
implementation
{$R *.DFM}
function Str2Hex(const data: array of byte; len: integer): string;
const
Hex:array[0..15] of char='0123456789ABCDEF';
var
i: Integer;
begin
setlength(result,length(data)*2);
for i := 0 to Len-1 do
begin
result[i*2+1]:=Hex[data[i] shr 4];
result[i*2+2]:=Hex[data[i] and $F];
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NumRead:integer;
b:array[1..BUF_SIZE] of byte;
s: string;
begin
assignfile(f,'T0105.101');
Reset(f);
repeat
BlockRead(f,b,BUF_SIZE,NumRead);
if NumRead=0 then break;
s:=Str2Hex(b,NumRead); //将每个字节以16进制表示
Memo1.Lines.Add(s);
until (NumRead = 0);
closefile(f);
Memo1.Lines.SaveToFile('binfile.txt');
end;
end.
就是把图片编为十六进制,然后再用解码程序解成 2进制,把图象再显示出来。
只是这个解码的程序没搞定,
编码的程序如上。
没分了,有了再给。
展开全部
按shift右键点你要打开的文件
选择打开方式
修改软件建议你使用ultraedit
选择打开方式
修改软件建议你使用ultraedit
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从文件编码的方式来看,文件可分为ascii码文件和二进制码文件两种。
ascii文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ascii码。例如,数5678的存储形式为:
asc码:
00110101
00110110
00110111
00111000
↓
↓
↓
↓
十进制码:
5
6
7
8
共占用4个字节。ascii码文件可在屏幕上按字符显示,
例如源程序文件就是ascii文件,用dos命令type可显示文件的内容。
由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。
例如,
数5678的存储形式为:
00010110
00101110只占二个字节。二进制文件虽然也可在屏幕上显示,
但其内容无法读懂。c系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。
输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。
因此也把这种文件称作“流式文件”。
ascii文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ascii码。例如,数5678的存储形式为:
asc码:
00110101
00110110
00110111
00111000
↓
↓
↓
↓
十进制码:
5
6
7
8
共占用4个字节。ascii码文件可在屏幕上按字符显示,
例如源程序文件就是ascii文件,用dos命令type可显示文件的内容。
由于是按字符显示,因此能读懂文件内容。
二进制文件是按二进制的编码方式来存放文件的。
例如,
数5678的存储形式为:
00010110
00101110只占二个字节。二进制文件虽然也可在屏幕上显示,
但其内容无法读懂。c系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。
输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。
因此也把这种文件称作“流式文件”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
具体有几个问题想问!呵呵!看你的消息吧!楼上的不是vb
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询