各路好汉!visual c++的二进制数据.dat文件转换成可读的十进制.txt,有无解药?

winfan 2000-03-03 04:04:00
...全文
318 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WHQ 2000-03-03
  • 打赏
  • 举报
回复
实现上文本文件与二进制文件的唯一区别在于对0x0D、0x0A字符的解释不同,二进制文件对此两个字符不做任何解释,直接写入到文件中,而文本文件则把0x0D、0x0A或0x0D0A均解释与两个字符0x0D0A。也就是说对任一不含回车、换行字符的ASCII字符系列,用文本方式与二进制文件写入文件的结果都是一样的。通常情况下,人们对文件文件及二进制文件的理解是这样的:当你把一个整数32写入到一个文件中时,用文本方式写的结果是文件中有两个字符——‘3’和'2',即你用一般的编辑器打开此文件后看到的内容是‘32’——而用二进制方式写入的结果则是文件中有四一个ASCII码分别为32、0、0、0字符(32位系统中整数占4个字节)。当你用一般的编辑器打开时就会看到第一个字符为空格,其它三个字符为不可见的。这是因为开发工具的输入输入库在用文本方式读写文件时对数据进行了重新解释。我猜测你的目的是把二进制文件中的数据按原先写的格式重新还原成你能识别的真实数据,如果是这样,你必须得知道文件的格式:即从第几个字节到第几个字节是整数据、浮点数还是一个字符串(你用文本编辑器看到的结果当前是不正确的,因为它只把文件的内容解释为一个字符串)。
softdoctor 2000-03-03
  • 打赏
  • 举报
回复
转换成十进制的文本文件不太好,即便转换成了也缺乏可读性。
为什么不用十六进制显示,这样每一个字节都是对应的。
guobinlily 2000-03-03
  • 打赏
  • 举报
回复
能不能请你说得再详细一点?
zjy 2000-03-03
  • 打赏
  • 举报
回复
请你参考:
FILE* ifp = fopen("???.dat","rb");
FILE* ofp = fopen("???.txt","wb+");
WORD read_buffer;
char write_buffer[16];
int bytes;
while(TRUE){
bytes = fread(&read_buffer,2,1,ifp);
if(bytes <= 0) break;
sprintf(write_buffer,"%d,",read_buffer);
fwrite(write_buffer,1,strlen(write_buffer),ofp);
}
fclose(ifp);
fclose(ofp);

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧