将byte []转换为字符串

时间:2009-09-15 14:38:41

标签: c# .net

如何将字节数组转换为字符串?我需要获取原始内容,例如“96 = A8 = FC- = A8 = FE”,但当我使用说Encoding.UTF8.GetString(字节)时,它返回“96 - ”。谢谢!

4 个答案:

答案 0 :(得分:10)

我认为你误解了字符串的内容。您最接近“原始内容”的是使用Encoding.Unicode - .NET在内部使用UTF-16,因此转换为UTF-16实际上只是将内存的内容从字符串复制到字节数组。

现在,回到你的问题,你有什么数据,它代表的意义是什么?文本数据是字符。二进制数据基本上是数字。你在两者之间有一个映射,那就是编码。

我有article on Unicode可能对您有所帮助,但我强烈怀疑您需要退后一步才能取得进展。

如果您尝试将字节数组转换为字母表的字符串表示形式为十六进制,则可以使用BitConverter.ToString(byte[]),但我不会将其描述为“原始”转换。

编辑:好的,现在我们有了上下文,回答起来要容易得多。您正在查看的是quoted printable编码。电子邮件应指定引用的可打印的编码,因此当您解码QP编码时,这就是您应该使用的。如果您当前没有存储原始电子邮件的内容编码,那么您现在应该开始这样做...

答案 1 :(得分:2)

您实际上需要每个字节的十六进制表示形式的字符串。问题How do you convert Byte Array to Hexadecimal String, and vice versa, in C#?将向您展示如何获取字符串,您可以更改该代码以添加所需的任何“in-between-bytes”格式。

答案 2 :(得分:1)

您可能希望使用ASCII编码,而不是UTF8。

答案 3 :(得分:0)

您也可以使用Convert.ToBase64CharArray方法

http://msdn.microsoft.com/en-us/library/system.convert.tobase64chararray(VS.80).aspx

Convert.ToBase64CharArray(Byte [],Int32,Int32,Char [],Int32)

  

转换8位无符号的子集   整数数组到等效子集   编码的Unicode字符数组   基数为64位。参数   将子集指定为偏移量   输入和输出数组,以及   输入数组中的元素数   转换。