社区
C++ 语言
帖子详情
怎么把二进制的文件转成ascii码文件啊
hwzwinds
2007-08-15 07:40:10
我刚开始学c++,想把一个二进制的文件转成ascii码的文件,怎么转啊.最好能有代码,谢谢!!
...全文
2388
20
打赏
收藏
怎么把二进制的文件转成ascii码文件啊
我刚开始学c++,想把一个二进制的文件转成ascii码的文件,怎么转啊.最好能有代码,谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
schlafenhamster
2008-08-21
打赏
举报
回复
给你一个例子,请自己该.
//Read Binary File into Buffer
BOOL CWindisavrDoc::ReadBin(CFile *pBinFile)
{
m_nSize =pBinFile->GetLength();
if(m_nSize==0)
{
AfxMessageBox("Binary file has 0 size !",MB_ICONSTOP);
return FALSE;
}
//
if(m_pBuffer) delete []m_pBuffer;
//
m_pBuffer=new BYTE[m_nSize];
if(m_pBuffer==0)
{
AfxMessageBox("Not enough memory !",MB_ICONSTOP);
return FALSE;
}
pBinFile->ReadHuge(m_pBuffer,m_nSize); //
//
return TRUE;
}
//Fill a string array in hex format 象:
//00100:53 49 4A 45 43 54 20 4F 50 20 43 53 50 00 00 00 SIJECT.OP.CSP...
BOOL CWindisavrDoc::StringBin()
{
BYTE *pTmp=m_pBuffer;
CString tmp;
CString prompt;
BYTE comment[40];
//
m_HexStrArray.RemoveAll();
//code behind maxSize will not be shown
int maxSize=2*((theApp.m_FlashEnd+1)+(theApp.m_EePromEnd+1));
if (m_nSize < maxSize) maxSize=m_nSize;
//
int FullRows=maxSize/16;
int PartRow=maxSize%16;
//
for(int rr=0;rr < FullRows ; rr++)
{//
tmp.Format("%05X:", 8*rr);//"10000:" 8Words
prompt+=tmp;
for(int col = 0;col < 16; col++)
{
if((*pTmp>' ') && (*pTmp<'z')) comment[col]=*pTmp;
else comment[col]='.';
tmp.Format("%02X ", *pTmp++);
prompt+=tmp;
}
comment[col]=0;
prompt+=" ";
prompt+=comment;
prompt+="\r\n";
m_HexStrArray.Add(prompt);
prompt.Empty();
}
//
if(PartRow!=0)
{
tmp.Format("%05X:", 8*rr);
prompt+=tmp;
for(int col = 0;col < PartRow; col++)
{
if((*pTmp>' ') && (*pTmp<'z')) comment[col]=*pTmp;
else comment[col]='.';
tmp.Format("%02X ", *pTmp++);
prompt+=tmp;
}
comment[col]=0;
while(col<16)
{// more spaces
prompt+=" ";//3
col++;
}
prompt+=" ";
prompt+=comment;
prompt+="\r\n";
m_HexStrArray.Add(prompt);
prompt.Empty();
}
//
return TRUE;
}
我看你有戏
2008-08-21
打赏
举报
回复
我想告诉楼主
1.文件存在磁盘里面都是 0101 组成的数据信息,可以这么理解
平时说的二进制文件,ascii文件是指你读写文件的方式,是一种方式,到最后在磁盘里面都是 010101的二进制数据信息
也不知道我说的对不对
2.楼主的意思可能是想知道,一个文件在磁盘里面的010101的表现形式吧,就是说把磁盘文件的二进制信息在屏幕上打印出来,类似一些二进制文件查看器的功能吧
schlafenhamster
2008-08-20
打赏
举报
回复
用UltraEdit可以看和复制.
liuyunfei224
2008-08-19
打赏
举报
回复
你们误解楼主的意图了!!
楼主的意思是:打开一个二进制格式的文件,把它的值读出来,再转换成十六进制的形式,最好把转换后的值写入到一个新的文本文件中,这样就可以了。
楼主是吗?
这是我实习时做的第一件事情,先在忘了怎么做的,那位高手能够把转换的代码写出来分享一下吗?
ocean放飞
2007-08-18
打赏
举报
回复
有的ascii要根据位数来判断的,直接转不知道offset是多少
uwinb
2007-08-16
打赏
举报
回复
修下一下:
fwrite(stud,sizeof(struct student),1,fp);
uwinb
2007-08-15
打赏
举报
回复
文件是字节流,你有没有想过判断是一个二进制文件的标准是什么?ASCII码文件是什么意思?
通常我们认为文本文件可能会包含26个小写字母和26个大写字母以及10个数字字符和标点符号,还有一些换行回车、空格空白、制表符等都是看不见的控制字符,它们的ASCII码值不大于125,
但是扩展的ASCII码和UniCode宽字符导致文件类型的并不准确!(一般通过偏移取特征值)
从另一个侧面,我们可以将问题简单化,你应该意识到“写”文件时存在两种截然不同的方式,
而不是强调文件分成这两种不同的类型。所谓的“二进制文件”如果不特指那些可执行文件的话,它的内容可以是很随意的,你根据什么来解释它的那一堆乱码呢?
以二进制方式写入的文件肯定是跟具体的应用联系在一起的,比方说同样是一篇文章,用记事本和用Word编辑会生成完全不同的文件,后者生成的在前者看来是一个不可识别的二进制文件。
//在一个程序中生成一个文件
struct student {int No; char* Name; float Score;} stud;
fwrite(fp,stud,sizeof(struct student)); //生成一个二进制文件
//在另外一个程序中完成转换
fread(fp,stud,sizeof(struct student));
fprintf(fp,"%d,%s,%f\n",stud.No,stud.Name,stud.Score);
//需要注意如果不对字符串特殊编码,它在两个文件中的存储是一样的!
v2002750
2007-08-15
打赏
举报
回复
所有文件都是二进制的,如果每个字节都可以用字符来表示,就成了文本文件
星羽
2007-08-15
打赏
举报
回复
直接把后缀名子改成 .txt
canybox
2007-08-15
打赏
举报
回复
不能.
# i n c l u d e //ASCII字符(文本文件)
35 105 110 99 108 117 100 101 //二进制文件
全部是0101,怎么转??
hwzwinds
2007-08-15
打赏
举报
回复
我再说详细一点吧,我有一个从一个软件中导出的二进制文档,里面的内容都是能用ascii码显示的字符,现在我想把它的内容读出来转成ascii码,再写到txt文件里去.真的不能实现吗?
hwzwinds
2007-08-15
打赏
举报
回复
读入二进制文件,转换成ascii码,然后写入文本文件中,如何实现?
唐巧
2007-08-15
打赏
举报
回复
楼主你对文件的理解有些误区.
ASCII码的文本文件只能存储ASCII字符,(其中大部分是可见字符).但是其实电脑中很多东西是不能简单用文本来显示的.比如一个mp3音乐,你想让它怎么用可见字符显示呢?这些文件我们就用二进制存储.
所以你的问题:"二进制的文件用记事本打开是乱码啊,我要把这个文件转成能看的懂的txt文件,能做到吗?"
答案是"不能".所以根本就不存在这样的函数,也不会有这样的需求.
iambic
2007-08-15
打赏
举报
回复
楼主还是给个例子吧,比如你要处理的二进制文件其字节表示是什么样子,处理后的ascii文件其字节表示又是什么样子。
iambic
2007-08-15
打赏
举报
回复
不过,你能看懂十六进制文件吗?
hwzwinds
2007-08-15
打赏
举报
回复
或者说怎么把一个二进制文件里的信息提取出来,转化成ASCII码,然后再写到一个新的文件里去.
iambic
2007-08-15
打赏
举报
回复
做不到。
hwzwinds
2007-08-15
打赏
举报
回复
二进制的文件用记事本打开是乱码啊,我要把这个文件转成能看的懂的txt文件,能做到吗?
gfxiang
2007-08-15
打赏
举报
回复
没看明白楼主的问题,所有文件都是以二进制形式存储的呀,ascii也是啊
楼主是想把二进制的数转成ascii码的数字?0x10 --> "16"?
iambic
2007-08-15
打赏
举报
回复
请问你理解二进制文件和ascii码文件的区别吗?
二进制
-文本互转工具
这是一款简易的
二进制
和文本互转的工具。如将
二进制
的0x12 34转换成"12 34",或者将文本的"12 34"转换成
二进制
的0x12 34。 使用方法:
二进制
转文本的时候只能通过
文件
方式转换,即
二进制
数据必须是
文件
形式(因为我们手写不能直观的表示
二进制
),转换后的文本同时保存为
文件
和文本框显示2种方式。 文本转
二进制
的时候可以通过
文件
和输入文本框两种方式,在即选择了
文件
同时又输入了文本框内容则程序优先使用文本框内容作为转换依据,转换后的
二进制
保存为
文件
形式。接受的文本要求为一个字节的2个字符中间不能有其他字符,字节与字节之间可以有其他任意字符。如"12 34 56","1234 56","123456"这些是允许的,而"1 2 3 4 5 6"这种是不允许的。
二进制
转化成ascll_如何将
二进制
文件
转换为ASCII
首先,我感谢您愿意提供的任何帮助,所以非常感谢您花时间阅读此文。另外,我使用的是Python 3,但我会尽我所能将我的需求转换为任何Python 2语法。如何将
二进制
文件
转换为ASCII我设法读取我的
二进制
文件
来产生一个非常长的字符串。这是它的一小块:myfile = "\xde\xad\xbe\xef\x01\x00\xe1\x07\x01\x00\x01\x00\x1e\x00\"我想将其转换...
二进制
转化成ascll_如何将大量
二进制
数据转换成ASCII格式?
我想读一个包含大量
二进制
数据的
文件
。我想把这个
二进制
数据转换成ASCII格式。在开始时,我想读取2个字节,它表示消息的大小,消息在大小之前。在阅读完整个消息之后,再次重复相同的操作,2字节为消息大小,然后是实际消息。在打印输入数据的代码-with open("abc.dat", "rb") as f:byte = f.read(1)i = 0while byte:i += 1print byte+...
【Shell 命令集合 备份压缩 】Linux 将
二进制
文件
转换为
ASCII码
uuencode命令 使用指南
uuencode命令是Linux系统中的一个用于编码
文件
的命令。它的作用是将
二进制
文件
转换为
ASCII码
表示的文本
文件
,以便在网络上传输或存储。
二进制
转化成ascll_用java将
二进制
转换
ascii码
今天玩程序员闯关游戏最后一关,碰到个难题,一大串
二进制
数要转换成
ascii码
。最后想到
ASCII码
对应的数是十进制数的,可以先把
二进制
转换成十进制,再强制转换成char类型就好了。于是用到Integer类中的一个方法:static int parseInt(String s, int radix)使用第二个参数指定的基数,将字符串参数解析为有符号的整数。该方法使用方式:第一个参数应填写以字符串形式...
C++ 语言
64,642
社区成员
250,580
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章