将Byte数组转化为String

问题

FCL得很多方法的返回值都是包含字符的Byte数组而不是返回一个String,这样的方法包含在如下的类中:

·                  System.Net.Sockets.Socket.Receive

·                  System.Net.Sockets.Socket.ReceiveFrom

·                  System.Net.Sockets.Socket.BeginReceive

·                  System.Net.Sockets.Socket.BeginReceiveFrom

·                  System.Net.Sockets.NetworkStream.Read

·                  System.Net.Sockets.NetworkStream.BeginRead

·                  System.IO.BinaryReader.Read

·                  System.IO.BinaryReader.ReadBytes

·                  System.IO.FileStream.Read

·                  System.IO.FileStream.BeginRead

·                  System.IO.MemoryStream // Constructor

·                  System.IO.MemoryStream.Read

·                  System.IO.MemoryStream.BeginRead

·                  System.Security.Cryptography.CryptoStream.Read

·                  System.Security.Cryptography.CryptoStream.BeginRead

·                  System.Diagnostics.EventLogEntry.Data

由这些方法返回的Byte数组中包含的通常是以ASCII编码或是Unicode编码的字符,很多时候,我们可能需要将这样的Byte数组转换为一个String

解决方案

将一个包含ASCII编码字符的Byte数组转化为一个完整的String,可以使用如下的方法:

using System;
              
              
using System.Text;
              
              

             
             
              
               
             
             
public static string FromASCIIByteArray(byte[] characters)
              
              
{
              
              
    ASCIIEncoding encoding = new ASCIIEncoding( );
              
              
    string constructedString = encoding.GetString(characters);
              
              
    return (constructedString);
              
              

}

将一个包含Unicode编码字符的Byte数组转化为一个完整的String,可以使用如下的方法:

public static string FromUnicodeByteArray(byte[] characters)
              
              
{
              
              
    UnicodeEncoding encoding = new UnicodeEncoding( );
              
              
    string constructedString = encoding.GetString(characters);
              
              
    return (constructedString);
              
              

}

 

讨论

ASCIIEncoding类的GetString方法可以将byte数组中的7-BitsASCII字符转换为一个String;任何大于127的值将被转化为两个字符。在System.Text命名空间中你可以找到ASCIIEncoding类,查找该类的GetString函数你还可以发现这个函数有多种重载方式以支持一些附加的参数。这个方法的重载版本还可以将一个Byte数组中的一部分字符转化为String

Byte数组转化为StringGetString方法可以在System.Text命名空间的UnicodeEncoding类中找到,该方法将包含16-bitsUnicode字符的Byte数组转化为String。同ASCIIEncoding类的GetString方法一样,该方法也包含一个将Byte数组中的特定部分转化为String的重载版本。

参考

要想了解更多的知识,可以参见MSDN文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值