将二进制文件转换为字符串及其反向转换

4
我创建了一个返回(二进制)文件的Web服务。不幸的是,我不能使用byte[],所以我必须将字节数组转换为字符串。 目前我的做法是以下内容(但它不起作用):
将文件转换为字符串:
byte[] arr = File.ReadAllBytes(fileName);
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();  
string fileAsString = enc.GetString(arr);  

为了检查是否正常工作,我通过以下方式将其转换回来:
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();
byte[] file = enc.GetBytes(fileAsString);

但是最终,原始的字节数组和从字符串创建的字节数组并不相等。我需要使用另一种方法将文件读取为字节数组吗?

1个回答

10

使用Convert.ToBase64String将其转换为文本,再使用Convert.FromBase64String将其转换回来。

编码用于将文本转换为二进制表示形式,并从文本的二进制表示形式转换回文本。在这种情况下,您没有文本的二进制表示形式 - 您只有任意二进制数据...因此,编码是不适合的。即使您使用可以“在某种程度上”处理任何二进制数据(例如ISO Latin 1)的编码,您会发现许多传输文本的方式在存在控制字符等时会失败。

Base64编码将为您提供仅为ASCII的文本,更易于处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接