字符串转字节问题
遇到问题了,先上代码
- 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
供你参考