我如何用 Delphi 把2进制文件用文本方式存储(100分)

  • 主题发起人 主题发起人 yinxianglong
  • 开始时间 开始时间
Y

yinxianglong

Unregistered / Unconfirmed
GUEST, unregistred user!
我如何用 Delphi 把2进制文件用文本方式存储,并能转换回2进制文件
1.不能简单的将文件用 0~F 来存储 如 1F 01 太浪费空间了
2.Delphi有没有自带方法实现
 
用FF来表示其实效率是50% 可以接受的,一字节现在用两字节表示需要空格的话就是33%
比如邮件里边的编码效率好像也就是50%
 
Delphi中有个Zlib单元,他可以压缩字符串,压缩以后全是乱码,压缩效率33%
 
zjan521说的不正确吧
1个Byte 8 位 标准字符集 只能用 7 位 包括你文件上传和下载都 都是用的 8bit to 7bit 什么规则我说不清,但一定是存在的我相信Delphi该提供了此项功能
 
to takashiki:
能说一下如何用吗
 
我给你推荐BASE64编码,DELPHI是否有标准的函数我就不知道了,不过方法确实是一个标准
 
to 光子
好像是有 idBase64Encode & idBase64Decode 两个类
我看了一下帮助就是干着用的,但是没有例子,也没有具体说明
,所以我不会用,不知有那们清楚的?
 
BASE64编码差不多是首选,不过这俩控件一直没用成功过。
有个函数,不过似乎只能Encode。
 
一看到这个标题, 我就想起这几天正在看的WEBSREVICE了,正如“光子”和“yinxianglong”所说,完全可以用Base64来实现,DELPHI6和DELPHI7的EncdDecd.Pas该UNIT中,procedure EncodeStream(input,output:TStream)和procedure DecdCodeStream(input,output:TStream)可以分别实现,其参数都是TStream,先将文件读入TStream中,用EncodeStream转化即可,此时,Output中已是String了,将该TSTREAM保存成文件即可! 可以用DecodeStream再将文本还原成原文件。
 
多人接受答案了。
 
文件的上传下载完全没必要用8-7的,直接传不就是了嘛
那种压缩编码8-7一般只用在发送邮件上边(其他协议是否采用我不清楚),因为用的最多的UNIX/Linux里边的邮件服务器SENDMAIL只采用了7比特的标准字符集,这样在传送中文的时候,就需要转化。BASE64就是其中的一种,具体不清楚,不过确实有直接把一个中文字节拆成两个字节(低四位,还有三位忘了是做什么的)
 
后退
顶部