最近在写串口通信助手,遇到了需要把汉字转换为十六进制的尴尬局面,因为其他字符如英文字母、换行和数字等都是有相对应的acsii码的,超过127就是汉字的ASCII码,这里做一下说明提供给之后用到的朋友。
刚开始我是直接将字符串 转换为 16进制
使用的是如下代码
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(textbox1_string);
结果如下
我来了123
63 63 63 49 50 51
是byte对应的十进制的数,可以对照ASCII码对照表查看一下
63是对应的问号(“?”),所以说是所有的中文字符都是在该转换方式都是问号
然后去查了一遍ASCII码对照表,发现里面并没有中文对应的每个ASCII码,所以只能另寻他策,然后 选择了下面的转换形式
byte[] byteArray = System.Text.Encoding.Default.GetBytes(textbox1_string);
结果如下
我来了123
CE D2 C0 B4 C1 CB 31 32 33
如图是byte对应的十六进制的数,中文分割成两个byte来表示