0

我正在尝试按字符将文本分组到字典中并返回每个字符的 Unicode 代码点。我正在使用以下代码

private Dictionary< Char, int> GetChars(string input)
    {

        return input.GroupBy(ch => ch)
                    .ToDictionary(g => g.Key, g => (int) g.Key);
    } 

此代码以十进制格式返回字符的 Unicode 代码点,但我希望它以十六进制格式。请问有什么帮助吗?

编辑:

示例:输入 A 输出 65

不应该是 41 吗?

正确的解决方案

 private Dictionary< Char, string> GetChars(string input)
    {

        return input.GroupBy(ch => ch)
                    .ToDictionary(g => g.Key, g => ((int) g.Key).ToString("x"));
    } 
4

2 回答 2

2

A有 65 作为十进制代码,a有 97 作为十进制代码。此外,该A字符具有 41 作为十六进制代码和101八进制代码。看看这里

您可能希望向您的方法添加第二个参数并根据您的上下文调用它:

class Program
{
    enum LetterConversion
    {
        ToLower,
        ToUpper,
        None
    }

    private static Dictionary<Char, int> 
        GetChars(string input, LetterConversion conversion)
    {
        switch (conversion)
        {
            case LetterConversion.ToLower:
                input = input.ToLower();
                break;
            case LetterConversion.ToUpper:
                input = input.ToUpper();
                break;
        }
        return input.GroupBy(ch => ch)
        .ToDictionary(g => g.Key, g => 
            int.Parse(String.Format("{0:X}", (int)g.Key)));

    }

    static void Main(string[] args)
    {
        // the values will be 97, 98, 99
        var d1 = GetChars("abcA", LetterConversion.ToLower);

        // the values will be 65, 66, 67
        var d2 = GetChars("abcA", LetterConversion.ToUpper);

        // the values will be 97, 98, 99, 65
        var d3 = GetChars("abcA", LetterConversion.None);
    }
}
于 2013-02-22T11:02:30.710 回答
1
Int i = 64;
string hex = i.ToString("X");
于 2013-02-22T11:33:03.840 回答