【问题标题】:convert Hex UTF-8 bytes to Hex code point将 Hex UTF-8 字节转换为 Hex 代码点
【发布时间】:2011-12-05 08:33:51
【问题描述】:

如何转换
十六进制 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     à ¤ ¤  

谢谢。

【问题讨论】:

  • 请向我们展示您到目前为止所做的尝试。
  • 真的不清楚您的输入是什么以及您想要什么输出......显示两者的示例会有所帮助。
  • @JonSkeet:我假设 OP 想要逆转 string.Join(" ", Encoding.UTF8.GetBytes(string).Select(x => x.ToString("X2")));
  • @dtb:可能,但并不完全清楚。特别是,输入是字节数组还是字符串并不明显......
  • BitConverter.ToString(b).Replace("-", "")

标签: c# unicode utf-8 hex


【解决方案1】:

Encoding 类中使用GetString 方法:

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

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

【讨论】:

  • Thankyou Guffa 我得到了答案,正如你所说的那样。我正在发布它。
【解决方案2】:
        //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);

【讨论】:

  • gag .... 跳过string.FormatConvert.ToByteint.Parse,直接说data[i] = c; 怎么样?
猜你喜欢
  • 2015-10-08
  • 2020-05-13
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
相关资源
最近更新 更多