字符串转字节问题
遇到问题了,先上代码
C# code
char a = (char)(0x1C);
char b = (char)(0x4B);
char c = (char)(0xAF);
String s = a.ToString() + b.ToString() + c.ToString();
byte[] mybyte = System.Text.Encoding.Default.GetBytes(s);
mybyte期望得到的结果是 1C 4B AF
但是实际上得到的结果是 1C 4B A1 A5
那位高手说一下原因
------解决方案--------------------char c = (char)(0xAF);这个已经超出了char的范围,至于GetBytes是如何工作的,可以用reflector去看看.net的源码
------解决方案--------------------转字节和编码方式有关,System.Text.Encoding.Default是什么编码方式不太清楚,可能是utf7之类的,
你的预期是asscii码,应该这样转:System.Text.Encoding.ASCII.GetBytes(s);
不过很奇怪,msdn上说System.Text.Encoding.Default就是System.Text.Encoding.ASCII,你可以试试,
------解决方案--------------------
分别用
System.Text.Encoding.ASCII.GetBytes(s)
System.Text.Encoding.Default.GetBytes(s)
System.Text.Encoding.Unicode.GetBytes(s)
测试,得到
3
4
6
关注了下 System.Text.Encoding.Default 是
System.Text.DBCSCodePageEncoding
得到
http://hi.baidu.com/oudioppa/blog/item/7a5cbcefc8f8f71efcfa3ce1.html
http://blog.csdn.net/jgood/article/details/4540466
供你参考