天天看點

C# 中關于漢字與16進制轉換的代碼

/// <summary>

    /// 從漢字轉換到16進制

    /// </summary>

    /// <param name="s"></param>

    /// <returns></returns>

    public static string GetHexFromChs(string s)

    {

        if ((s.Length % 2) != 0)

        {

            s += " ";//空格

            //throw new ArgumentException("s is not valid chinese string!");

        }

        System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");

        byte[] bytes = chs.GetBytes(s);

        string str = "";

        for (int i = 0; i < bytes.Length; i++)

            str += string.Format("{0:X}", bytes[i]);

        return str;

    }

    /// <summary>

    /// 從16進制轉換成漢字

    /// <param name="hex"></param>

    public static string GetChsFromHex(string hex)

        if (hex == null)

            throw new ArgumentNullException("hex");

        if (hex.Length % 2 != 0)

            hex += "20";//空格

            //throw new ArgumentException("hex is not a valid number!", "hex");

        // 需要将 hex 轉換成 byte 數組。

        byte[] bytes = new byte[hex.Length / 2];

            try

            {

                // 每兩個字元是一個 byte。

                bytes[i] = byte.Parse(hex.Substring(i * 2, 2),

                    System.Globalization.NumberStyles.HexNumber);

            }

            catch

                // Rethrow an exception with custom message.

                throw new ArgumentException("hex is not a valid hex number!", "hex");

        // 獲得 GB2312,Chinese Simplified。

        return chs.GetString(bytes);

wq r