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);