二进制转字符串exe",FileMode.Open);BinaryReaderbr=newBinaryReader(fs);byte[]bin=br.ReadBytes(Convert.ToInt32(fs.Length));System.Text.Encodingenc=System.Text.Encoding.ASCII;字符串myString=enc.GetString(bin);fs.Close();br.Close();System.Text.ASCIIEncoding编码=newSystem.Text.ASCIIEncoding();byte[]rebin=encoding.GetBytes(myString);FileStreamfs2=newFileStream("C:\tvout.exe",FileMode.Create);BinaryWriterbw=newBinaryWriter(fs2);bw.Write(rebin);fs2.关闭();bw.关闭();这不起作用(结果具有完全相同的字节大小但不起作用)如果我执行bw.Write(bin)结果没问题但是当你将字节解码为字符串时我必须将它保存为字符串,并且当将它们重新编码为字节,您会丢失信息。ASCII尤其是一个非常糟糕的选择,因为ASCII会在途中抛出大量信息,但无论您选择哪种编码类型,在编码和解码时都有丢失信息的风险,因此您没有走上正确的道路.您需要的是BaseXX例程之一,它将二进制数据编码为可打印字符,通常用于存储或通过仅允许文本的媒体传输(想到电子邮件和usenet)。Ascii85就是这样一种算法,此页面包含指向不同实现的链接。它的比例为4:5意味着4个字节将被编码为5个字符(大小增加25%)。如果不出意外,.NET中已经内置了一个Base64编码例程。它的比例为3:4(大小增加了33%),这里:下面是使用这些方法的代码:stringmyString;使用(FileStreamfs=newFileStream("C:\tvin.exe",FileMode.Open))使用(BinaryReaderbr=newBinaryReader(fs)){byte[]bin=br.ReadBytes(Convert.ToInt32(fs.Length)));myString=Convert.ToBase64String(bin);}byte[]rebin=Convert.FromBase64String(myString);使用(FileStreamfs2=newFileStream("C:\tvout.exe",FileMode.Create))使用(BinaryWriterbw=newBinaryWriter(fs2))bw.Write(rebin);我不认为你可以用这种方式来表示ASCII中的所有字节。Base64是另一种选择,但字节和文本之间的比例为3:4。以上就是《C#学习教程:二进制文件转字符串共享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
