C# byte[]与char[]、string与char[]、byte[] 与 string 互转

C# char[]、byte[]、string互相转换

string to char[]: string的 ToCharArray() 可以返回一个 char[]
char[] to string, byte[] to string: Encoding的 GetBytes(char[])、GetBytes(string) 可以将 char[]、string 转为 byte[]
要么用Convert.ToByte()一个个Byte转,Convert里只有ToString的,没有ToBytes和Chars的
byte[] to string: Encoding.GetEncoding("xx").ToString(byte[]),重载ToString(byte[],int index,int count),或者Encoding.Unicode/ASCII/UTF8 等 Encoding实例类的 ToString(byte[]) 方法。Convert,ToString(para-list) 里没有char[] byte[]的重载,况且byte要考虑编码。
char[] to string: suppose char[] ch has already existed, string s=new string(ch), 这样就转换好了。也可以用 StringBuilder s=new StringBuilder().Append(ch).ToString(),StringBuilder是可变字符串类,看名字就知道是方便于Build的。很好。


C# byte[]与char[]、string与char[]、byte[] 与 string 互转  

2011-02-28 17:32:54|  分类: C# |  标签:字符串互转  |举报|字号 订阅

1. byte array -> char array

    Byte[] b=new byte[5]{0x01,0x02,0x03,0x04,0x05}; 

Char[] c=Encoding.ASCII.GetChars(b); 

 

2. char array -> byte array

    view plaincopy to clipboardprint?
Char[] c=new char[5]{a,b,c,d,e};   
  
Byte[] b=Encoding.Default.GetBytes(c);   
Char[] c=new char[5]{a,b,c,d,e};

Byte[] b=Encoding.Default.GetBytes(c);

 

3.string 转换成 Char[]

   view plaincopy to clipboardprint?
string ss="abcdefg";   
  
char[] cc=s.ToCharArray();  
string ss="abcdefg";

char[] cc=s.ToCharArray();

 
4.Char[] 转换成string


view plaincopy to clipboardprint?
using System.Text;   
  
StringBuilder sb=new StringBuilder();   
foreach(char c in cc)   
{   
  sb.Append(c);   
}   
string s=sb.ToString();  
 using System.Text;

 StringBuilder sb=new StringBuilder();
 foreach(char c in cc)
 {
   sb.Append(c);
 }
 string s=sb.ToString();
 

5.byte[] 与 string

view plaincopy to clipboardprint?
byte[] bb=Encoding.UTF8.GetBytes(ss);   
  
string s=Encoding.UTF8.GetString(bb);  
 byte[] bb=Encoding.UTF8.GetBytes(ss);

 string s=Encoding.UTF8.GetString(bb);


### C# 中将 `byte` 类型转换为 `string` 的方法 在 C# 编程中,将单个字节 (`byte`) 或者字节数组 (`byte[]`) 转换为字符串是一个常见的需求。以下是几种实现方式: #### 方法一:使用 `System.Text.Encoding` 通过指定编码格式(如 UTF-8, ASCII 等),可以轻松地将字节数组转换为字符串。 ```csharp byte[] byteArray = { 72, 101, 108, 108, 111 }; // 对应 "Hello" string result = System.Text.Encoding.UTF8.GetString(byteArray); // 结果:"Hello" ``` 这种方法适用于已知编码格式的情况[^1]。 --- #### 方法二:使用 `BitConverter.ToString()` 如果需要将字节数组表示为十六进制形式的字符串,则可以采用此方法。 ```csharp byte[] bytes = { 72, 101, 108, 108, 111 }; string hexString = BitConverter.ToString(bytes).Replace("-", ""); // 结果:"48656C6C6F" ``` 需要注意的是,默认情况下该方法会插入连字符 `-`,因此可以通过 `.Replace("-","")` 移除这些分隔符[^2]。 --- #### 方法三:手动解析并拼接 对于更复杂的场景或者自定义的需求,可以选择逐一遍历字节数组,并将其逐一转换为对应的字符或子串。 ```csharp byte[] bytes = { 72, 101, 108, 108, 111 }; string result = ""; foreach (var b in bytes) { result += ((char)b).ToString(); } // 结果:"Hello" ``` 这种方式灵活性较高,但效率可能不如前两种方法[^4]。 --- #### 特殊情况处理 当仅有一个单独的 `byte` 需要被转化为字符串时,可以直接调用其内置函数完成操作。 ```csharp byte singleByte = 72; string byteAsString = singleByte.ToString(); // 结果:"72" // 如果想得到对应ASCII码表中的字母 string asciiChar = ((char)singleByte).ToString(); // 结果:"H" ``` 上述代码片段展示了针对单一变量而非集合类型的简单解决方案[^3]。 --- ### 总结 以上介绍了多种从 `byte/byte[]` 到 `string` 的转换手段,在实际开发过程中可根据具体业务逻辑选取最合适的方案来满足项目需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值