日期:2014-05-19  浏览次数:20704 次

如何把string转换为char[]以及byte[]
如何把string转换为char[]以及byte[],两种代码都要

------解决方案--------------------
我用FileStream.Write来写文件,就写字符,但FileStream.Write这个函数的第一个参数是byte[], 如何转换?

=========
1。
字符串转换为字节数组,你需要指定编码,不同的编码,输出的字节数组是不一样的,
同时,读取的时候,也要使用对应的编码,否则非拉丁字符会乱出现乱码

string str = "hello world ";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(str);
char[] chars = System.Text.Encoding.UTF8.GetChars(buffer);
chars = str.ToCharArray(); // 此方法内部使用 Unicode 编码
// byte[] buffer = System.Text.Encoding.GetEncode( "GB2312 ").GetBytes(str);
//char[] chars = (char[])buffer; // CS0030: 无法将类型“byte[]”转换为“char[]”
chars = new char[buffer.Length];
Array.Copy(buffer, chars, buffer.Length); // 直接拷贝隐式转换

2。
事实上,如果你进行写字符串,可以选择 StreamWriter

string str = "hello world ";
using(System.IO.FileStream fstream = new System.IO.FileStream( "C:\\somefile ")) {
System.IO.StreamWriter writer = new System.IO.StreamWriter(fstream);
writer.Write(str);
}