C#中字符串string与byte[]数组互转

本文介绍了如何在C#中实现字符串与字节数组之间的相互转换,包括使用System.Text.Encoding类的各种方法,以及处理未知编码方式的文件。此外还提供了一种利用BitConverter类进行转换的方法。
摘要由CSDN通过智能技术生成
//String To Byte[]:
byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);

//Byte[] To String:
string str = System.Text.Encoding.Default.GetString(byteArray);

其实,在System.Text.Encoding class中,还有很多其它有用的方法,像GetChars,从一个byte[]转成一个char[],等等,可以参考MSDN。

另外,还有其它编码方式的,如System.Text.UTF8Encoding class、System.Text.UnicodeEncoding class等,根据不同需要可选不同的class。

另外一种方法是如下:

名称说明
BitConverter.ToString()出现运行时错误时,发生此事件
BitConverter.ToString(Byte[])返回由字节数组的元素转换来的 String
BitConverter.ToString(Byte[], Int32)返回由字节数组中从指定数组位置开始的元素转换来的 String
BitConverter.ToString(Byte[], Int32, Int32)返回由字节数组中指定位置、指定数量的字节转换来的 String
BitConverter.ToString(Byte[])这个方法不行,得到的是byte数组的16进制字符串, 如”AH-0A-1A”

如果是未知编码方式呢?
比如用FileStream从一个文件中读取了流到byte[]中,这时候并不知道这个文件的编码方式是gb2312还是utf-8,如何才能正确的取到string值?

你可以试试这种解决方案:

StreamReader sr = new StreamReader(new MemoryStream(byteArray));
string str = sr.ReadToEnd();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值