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);
请参考以下示例:
输出结果为
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);
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);
相关文章推荐
- C#基础系列(7)-- 第二部分 字符串相关 -- string与StringBuilder(2)
- c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
- c#中字节数组byte[]、图片image、流stream,字符串string、内存流MemoryStream、文件file,之间的转换
- C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换
- C# 字符串string和内存流MemoryStream及比特数组byte[]之间相互转换
- 详谈C# 图片与byte[]之间以及byte[]与string之间的转换
- C#基础系列(8)-- 第三部分 面向对象相关 -- 类与结构(1)
- C# char和byte 以及string之间的转换问题
- C# 图片与byte[]之间以及byte[]与string之间的转换
- C# string和byte[]之间转换
- C#基础系列(10)-- 第三部分 面向对象相关 -- 浅复制与深复制(3)
- JavaSE8基础 String 通过构造方法把部分一维byte数组转为字符串
- c# byte字节数组与string字符串之间的转换
- C#中char[]与string之间的转换;byte[]与string之间的转化
- C# Stream 和 byte[] 之间的转换,字符串可以转换成byte[]
- string和byte[]之间的转换 (C#)
- C#中Byte[]和String之间转换的方法
- C#基础系列(9)-- 第三部分 面向对象相关 -- 抽象类与接口(2)
- 字符串 (string)与字节数组(byte[])之间的转换
- C# 图片与byte[]之间以及byte[]与string之间的转换