日期:2014-05-20  浏览次数:21022 次

读取文件,将内容转成二进制字符串。
我的做法是:
FileStream   -> base64String   ->   (int)base64String   ->   binaryString(二进制字符串)   。

但是最后我根据String   的位长算出的文件大小总是大于原文件。

请各位给偶一个将文件内容转成二进制字符串的例子,并且告诉我上面的转换方法的错误之处。

------解决方案--------------------
base64String要长三分之一的.正常.
------解决方案--------------------

StreamReader sr = new StreamReader(@ "c:\logo.gif ", System.Text.Encoding.Default);
byte[] b = System.Text.Encoding.Default.GetBytes(sr.ReadToEnd().ToCharArray());

这样就一样了.
------解决方案--------------------
TO:base64String 的为什么要长1/3呢?

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

------解决方案--------------------
再说了,你用base64得到的byte跟原来的存储内容已经是千差万别了.
------解决方案--------------------
4个8位的容量也是32位啊,为什么叫base64
------解决方案--------------------
是对照表上的64个字符. 字节如果是0则A, 1-B-Za-z0-9+/ 64个字符
------解决方案--------------------
TO:在高位置加 "00 " 不会出现数据丢失吗?


为什么会出现数据丢失呢?


------解决方案--------------------
可能楼主还是没有对Base64编码的原因,目的等搞清楚...

简单的说,有两个原因:

第一:加密,当然也只能达到 "一眼望去完全看不出内容 "的效果..

第二:传输,为了满足早期的 "Email只被允许传送ASCII字符 "的限制...

给你找了篇文章,虽然讲得也不是很详细,但我觉得也差不多了..

看看吧..

http://kjavaer.bokee.com/
------解决方案--------------------
TO:那怎么把文件还原出来捏

有加密,当然也有对应的解密啊..

或者说有编码,当然也有对应的解码...
------解决方案--------------------
我是初学者,看了这些。虽然不太懂,但是我想学了一定有用。顶