大家好,小弟第一次发帖,接触汉字和拼音的转换觉得很奇怪,想问问到底是怎么转换的??代码都是网上找的,其中为什么要转换成十六进制的呢? /// <param name="c">要转换的单个汉字</param>
/// <returns>拼音声母</returns>
private static string GetPYChar(string c)
{
byte[] array = new byte[2];
array = System.Text.Encoding.Default.GetBytes(c);
int i = (short)(array[0] - '\0') * 256 + ((short)(array[1] - '\0'));
if (i < 0xB0A1) return "*";
if (i < 0xB0C5) return "A";
if (i < 0xB2C1) return "B";
return "*";
} private static int[] pyValue = new int[]
{
-20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036,
-20032,-20026,-20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763,
-19756,-19751,-19746,-19741,-19739,-19728,-19725,-19715,-19540,-19531,-19525,-19515,
-19500,-19484,-19479,-19467,-19289,-19288,-19281,-19275,-19270,-19263,-19261,-19249,
}
上面的代码和下面的代码只是截取了一小部分。。
不明白的地方 int i = (short)(array[0] - '\0') * 256 + ((short)(array[1] - '\0'));
这段代码 的作用是什么?为什么要将其转换成十六进制?-20319,-20317,-20304,-20295这些个数字又是什么?怎么来的?? 更重要的是,我想问问其中的思路是什么??为什么要这样转换??是不是所有的汉字都包括在内了呢?? 各位兄弟姐妹 能帮忙的话就帮帮小弟吧先谢过了。。
/// <returns>拼音声母</returns>
private static string GetPYChar(string c)
{
byte[] array = new byte[2];
array = System.Text.Encoding.Default.GetBytes(c);
int i = (short)(array[0] - '\0') * 256 + ((short)(array[1] - '\0'));
if (i < 0xB0A1) return "*";
if (i < 0xB0C5) return "A";
if (i < 0xB2C1) return "B";
return "*";
} private static int[] pyValue = new int[]
{
-20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036,
-20032,-20026,-20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763,
-19756,-19751,-19746,-19741,-19739,-19728,-19725,-19715,-19540,-19531,-19525,-19515,
-19500,-19484,-19479,-19467,-19289,-19288,-19281,-19275,-19270,-19263,-19261,-19249,
}
上面的代码和下面的代码只是截取了一小部分。。
不明白的地方 int i = (short)(array[0] - '\0') * 256 + ((short)(array[1] - '\0'));
这段代码 的作用是什么?为什么要将其转换成十六进制?-20319,-20317,-20304,-20295这些个数字又是什么?怎么来的?? 更重要的是,我想问问其中的思路是什么??为什么要这样转换??是不是所有的汉字都包括在内了呢?? 各位兄弟姐妹 能帮忙的话就帮帮小弟吧先谢过了。。
解决方案 »
- 请教一个GridView分页的问题?
- 有没有前端交互界面开发技术??
- 已经调用Session.Abandon()方法,可是还能取出值来??????
- 在c#中如何实现java中的setTimeInMillis函数功能?
- 关于asp.net中的session
- girdview 增加类似进度条的列
- Asp.net MVC EF EasyUi DataGrid获取json数据
- 订单插入后有时候查询不到订单
- 调用什么控件可以让用户输入文章内容的时候,可以排版,就象有的论坛一样???高手指点指点八
- 有关xml的问题,能帮忙的进来说两句、给点建议!!!(100分)
- 服务器端button,用onmouseover、onmouseout来改变鼠标移动在上的样式
- 根据权限绑定treeview的问题。急!!
array = System.Text.Encoding.Default.GetBytes(c[j].ToString());
i1 = (short)(array[0]);
i2 = (short)(array[1]);// 获取汉字机内码
chrAsc = i1 * 256 + i2 - 65536;
本人也在网上找到许多取汉字拼音头的代码,找到了几种办法,但能不太好,简单的返回的拼音头会有许多不正确,后来找到一个麻烦的,拼音头的获取虽然正确率很高,但还是不好,主要是因为有许多汉字是多音字,为了改正这个问题,在网上找了N久也没有找到,后来一个偶然,在某输入法的目录下找到一个汉字的拼音码表,改了许多时间,现在可用了,虽然实现的方法可能有些不好,但运行了这么长时间,一直没有太大问题,做法很简单:把一个拼音对应的文本文件载入到内存(不到80KB),然后查找某汉字在文本中的对应位置,就可以返回所有汉字的拼音头. 这种做法能返回多音字的所有拼音头,而且如果有错误或不足自己也可以修改