社区
C++ 语言
帖子详情
怎么把二进制的文件转成ascii码文件啊
hwzwinds
2007-08-15 07:40:10
我刚开始学c++,想把一个二进制的文件转成ascii码的文件,怎么转啊.最好能有代码,谢谢!!
...全文
2521
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码文件的区别吗?
ASCII码
文件
和
二进制
码
文件
的区别
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown
文件
丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
python脚本将
ascii码
形式的
文件
转换为真正的
二进制
文件
1、通过tcpdump在越狱手机上面抓取所有包,包含环路包 将手机通过USB线连接电脑,并将其映射到本地端口,启动抓包 rvictl -s bb44203ca128c7b13bfc66fa34f6c1c9b428d0d9 ssh root@localhost -p 2222 tcpdump -s0 -i any -w /tmp/aaa123aaa.pcap 2、通过wiresha...
常见字符的
ASCII码
,java中如何获取字符的
ASCII码
一、常见字符的
ASCII码
ASCII 码使用指定的7 位或8 位的
二进制
数组合来表示128 或256 种可能的字符。 标准ASCII 码也叫基础
ASCII码
,使用7 位
二进制
数(最高的1位
二进制
为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制符号。具体对照情况如下表。这128个字符可以分为以下两种: (使用
ASCII码
对应的十进制数表示顺序) 1...
BCD码转换成
二进制
和
ASCII码
BCD码转换成
二进制
和
ASCII码
;用BCD码表示:十位上的十进制数为 2 == BCD码表示为 0010;个位上的十进制数9 === BCD码表示为 1001;所以总的来说 十进制数 29 用BCD码表示为:0010 1001;转换过程:把BCD码 0010(十进制数为十位上的 2)右移4位(其实表示当作一个个位数,或者说单纯的数值),然后乘以10 还原到十进制的权重(因为这个数本来表示的就是十进制数中的十位)。处理完十位上的数,接着处理个位上的数。因为BCD码的权重和
二进制
的前四位权重是一样(2^n,n
ASCII码
文件
与
二进制
文件
的区别
1)存储形式
二进制
文件
是按该数据类型在内存中的存储形式存储的; 文本
文件
则是将该数据类型转换为可在屏幕上显示的形式存储的; 2)存储空间 ASCII存储方式所占空间较多且所占空间大小与数值大小有关; 3)读写时间
ASCII码
文件
在外存上以
ASCII码
存放,而在内存中的数据都是以
二进制
存放,因此当进行
文件
读写时要进行转换,造成存取数据较慢;
二进制
文件
的数据是按其在内存中...
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章