您的位置:首页 > 编程语言 > C#

C#基础系列(6)-- 第二部分 字符串相关 -- byte[]与string之间的转换(1)

2010-07-10 16:11 1151 查看
FCL的许多方法需要byte[]与字符串之间的转换,此时可以使用以下方法
byte [] bytes = Encoding.ASCII.GetBytes(str);
或者
byte [] bytes = Encoding.Unicode.GetBytes(str);
或者
byte [] bytes = Encoding.UTF8.GetBytes(str);
或者
byte [] bytes = Encoding.Default.GetBytes(str);

请参考以下示例:

string str = "amandag高歌";

byte[] bytes = Encoding.ASCII.GetBytes(str);
foreach (byte b in bytes)
{
    Console.Write(b + " ");
}
Console.WriteLine();

bytes = Encoding.Unicode.GetBytes(str);
foreach (byte b in bytes)
{
    Console.Write(b + " ");
}
Console.WriteLine();

bytes = Encoding.UTF8.GetBytes(str); //Encoding.GetEncoding("utf-8").GetBytes(str);
foreach (byte b in bytes)
{
    Console.Write(b + " ");
}
Console.WriteLine();

bytes = Encoding.Default.GetBytes(str); //Encoding.GetEncoding("gb2312").GetBytes(str)
foreach (byte b in bytes)
{
    Console.Write(b + " ");
}
Console.WriteLine();


输出结果为
97 109 97 110 100 97 103 63 63
97 0 109 0 97 0 110 0 100 0 97 0 103 0 216 154 76 107
97 109 97 110 100 97 103 233 171 152 230 173 140
97 109 97 110 100 97 103 184 223 184 232

这里也可以看出
对于ASCII编码,不支持的中文汉字以?号(ASCII值为63)显示
对于Unicode编码,则是每字符固定的2字节
对于utf-8编码,前面的英文字母都是占1个字节,汉字则是占3个字节(实际上是每字符1~3个字节)
对于gb2312,前面的英文字母都是占1个字节,汉字则是占2个字节



如果需要将byte[]转换为字符串,同样可以用以下方法
byte [] bytes = ...
string str = Encoding.ASCII.GetString(bytes);
或者
string str = Encoding.Unicode.GetString(bytes);
或者
string str = Encoding.UTF8.GetString(bytes);
或者
string str = Encoding.Default.GetString(bytes);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: