大家好,小弟第一次发帖,接触汉字和拼音的转换觉得很奇怪,想问问到底是怎么转换的??代码都是网上找的,其中为什么要转换成十六进制的呢?  /// <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这些个数字又是什么?怎么来的?? 更重要的是,我想问问其中的思路是什么??为什么要这样转换??是不是所有的汉字都包括在内了呢?? 各位兄弟姐妹  能帮忙的话就帮帮小弟吧先谢过了。。
 

解决方案 »

  1.   

    http://topic.csdn.net/u/20100115/12/e0bd25e0-e065-41e0-aeec-5fff3ca32251.html
      

  2.   

    汉字的机内码数组
    array = System.Text.Encoding.Default.GetBytes(c[j].ToString());
    i1 = (short)(array[0]);
    i2 = (short)(array[1]);// 获取汉字机内码
    chrAsc = i1 * 256 + i2 - 65536;
      

  3.   

    这好像不是SQL问题吧
    本人也在网上找到许多取汉字拼音头的代码,找到了几种办法,但能不太好,简单的返回的拼音头会有许多不正确,后来找到一个麻烦的,拼音头的获取虽然正确率很高,但还是不好,主要是因为有许多汉字是多音字,为了改正这个问题,在网上找了N久也没有找到,后来一个偶然,在某输入法的目录下找到一个汉字的拼音码表,改了许多时间,现在可用了,虽然实现的方法可能有些不好,但运行了这么长时间,一直没有太大问题,做法很简单:把一个拼音对应的文本文件载入到内存(不到80KB),然后查找某汉字在文本中的对应位置,就可以返回所有汉字的拼音头. 这种做法能返回多音字的所有拼音头,而且如果有错误或不足自己也可以修改