将十六进制UTF-8字节转换为十六进制代码点

时间:2011-10-11 14:07:54

标签: c# unicode utf-8 hex

我怎么能转换为 十六进制UTF-8字节-E0 A4 A4到十六进制代码点 - 0924

参考:http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=e0+a4+a4&mode=bytes

我需要这个,因为当我在c#中读取Unicode数据时,它将它作为单字节序列并显示3个字符而不是1,但我需要3个字节序列(读取3个字节并显示单个字符),我尝试了很多解决方案但没有得到结果。

如果我可以显示或存储3字节序列utf-8字符,那么我不需要转换。

senario就像这样:

    string str=getivrresult();
在str中我有一个单词,每个字符为3字节utf-8序列。

编辑:

             string str="त";
             //i want it as "त" in str.

    Character                                   त
    Character name                              DEVANAGARI LETTER TA
    Hex code point                              0924
    Decimal code point                          2340
    Hex UTF-8 bytes                             E0 A4 A4
    Octal UTF-8 bytes                           340 244 244
    UTF-8 bytes as Latin-1 characters bytes     à ¤ ¤  

谢谢。

2 个答案:

答案 0 :(得分:6)

使用GetString类中的Encoding方法:

byte[] data = { 0xE0, 0xA4, 0xA4 };
string str = Encoding.UTF8.GetString(data);

字符串现在包含一个字符代码为0x924的字符。

答案 1 :(得分:0)

        //utf-8 Single Byte Sequence input
        string str = "त";
        int i = 0;
        byte[] data=new byte[3];

        foreach (char c in str)
        {
            string tmpstr = String.Format("{0:x2}", (int)c);
            data[i] = Convert.ToByte(int.Parse(tmpstr, System.Globalization.NumberStyles.HexNumber));
            i++;
        }


        //utf-8 3-Byte Sequence Output now stp contains "त".
        string stp = Encoding.UTF8.GetString(data);