几种字符串到byte[] 数组转化为String 的方法

本文介绍了如何将包含ASCII或Unicode编码的Byte数组转换为String的方法,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

< language="javascript" src="/ad/js/edu_left_300-300.js" type="text/javascript"> 
问题

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

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/hustbill/archive/2005/07/31/443219.aspx

### C# 中字符串换为字节数组方法 在 C# 编程语言中,可以通过 `System.Text.Encoding` 类实现字符串与字节数组之间的相互换。以下是几种常见的编码方式及其对应的代码示例。 #### UTF-8 编码 UTF-8 是一种广泛使用的字符编码标准,在处理国际化文本时非常常见。通过 `Encoding.UTF8.GetBytes` 方法可将字符串换为字节数组: ```csharp using System; using System.Text; class Program { static void Main() { string str = "Hello, World!"; byte[] byteArray = Encoding.UTF8.GetBytes(str); Console.WriteLine("字符串字节数组(UTF-8):"); foreach (byte b in byteArray) { Console.Write(b + " "); } Console.WriteLine(); } } ``` 此方法适用于大多数场景下的字符串换[^1]。 #### ANSI 编码 ANSI 编码通常用于本地化环境,默认情况下会根据系统的区域设置来决定具体的编码形式。可以使用 `Encoding.Default.GetBytes` 来完成这一操作: ```csharp string str = "Hello, World!"; byte[] byteArray = Encoding.Default.GetBytes(str); Console.WriteLine("字符串字节数组(Default/ANSI):"); foreach (byte b in byteArray) { Console.Write(b + " "); } Console.WriteLine(); ``` 这种方法适合于特定地区的简单字符集需求[^2]。 #### GB2312 和 Big5 编码 对于支持中文简体或繁体的应用程序,可以选择相应的编码方案如 GB2312 或 Big5 进行换。例如: ```csharp // 简体中文(GB2312) byte[] gb2312Bytes = Encoding.GetEncoding("gb2312").GetBytes("哈啊a1"); Console.WriteLine("字符串字节数组(GB2312):" + string.Join("-", Array.ConvertAll(gb2312Bytes, x => x.ToString()))); // 繁体中文(Big5) byte[] big5Bytes = Encoding.GetEncoding("big5").GetBytes("哈啊a1"); Console.WriteLine("字符串字节数组(Big5):" + string.Join("-", Array.ConvertAll(big5Bytes, x => x.ToString()))); ``` 这些编码特别针对亚洲语言设计,能够更精确地表示汉字等复杂字符[^3]。 以上就是多种条件下从字符串到字节数组的不同换手段以及其实现代码片段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值