C# 使用十六进制格式的Unicode代码点将文本按字符分组到chacartes字典中

C# 使用十六进制格式的Unicode代码点将文本按字符分组到chacartes字典中,c#,C#,我正在尝试将文本按字符分组到字典中,并返回每个字符的Unicode代码点。我正在使用以下代码 private Dictionary< Char, int> GetChars(string input) { return input.GroupBy(ch => ch) .ToDictionary(g => g.Key, g => (int) g.Key); } private Diction

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

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

        return input.GroupBy(ch => ch)
                    .ToDictionary(g => g.Key, g => (int) g.Key);
    } 
private DictionaryGetChars(字符串输入)
{
返回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"));
    } 
private DictionaryGetChars(字符串输入)
{
返回input.GroupBy(ch=>ch)
.ToDictionary(g=>g.Key,g=>((int)g.Key).ToString(“x”));
} 

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);
    }
}
类程序
{
枚举字母转换
{
托洛尔,
图珀,
没有一个
}
专用静态字典
GetChars(字符串输入、字母转换)
{
开关(转换)
{
case LetterConversion.ToLower:
input=input.ToLower();
打破
case LetterConversion.ToUpper:
input=input.ToUpper();
打破
}
返回input.GroupBy(ch=>ch)
.ToDictionary(g=>g.Key,g=>
Parse(String.Format(“{0:X}”,(int)g.Key));
}
静态void Main(字符串[]参数)
{
//值将为97、98、99
var d1=GetChars(“abcA”,LetterConversion.ToLower);
//值将为65、66、67
var d2=GetChars(“abcA”,LetterConversion.ToUpper);
//值将为97、98、99、65
var d3=GetChars(“abcA”,LetterConversion.None);
}
}

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);
    }
}
类程序
{
枚举字母转换
{
托洛尔,
图珀,
没有一个
}
专用静态字典
GetChars(字符串输入、字母转换)
{
开关(转换)
{
case LetterConversion.ToLower:
input=input.ToLower();
打破
case LetterConversion.ToUpper:
input=input.ToUpper();
打破
}
返回input.GroupBy(ch=>ch)
.ToDictionary(g=>g.Key,g=>
Parse(String.Format(“{0:X}”,(int)g.Key));
}
静态void Main(字符串[]参数)
{
//值将为97、98、99
var d1=GetChars(“abcA”,LetterConversion.ToLower);
//值将为65、66、67
var d2=GetChars(“abcA”,LetterConversion.ToUpper);
//值将为97、98、99、65
var d3=GetChars(“abcA”,LetterConversion.None);
}
}


您的输入和示例输出是什么。你应该得到整数。我猜你在VisualStudio中点击了“十六进制”按钮,显示了十六进制的输出。只是整数,我已经更新了question@RoadBump,那么如何将它再次更改为十六进制?不知道这是否是一个很好的解决方案。但是您可以使用.ToString(“X”)将int转换为hex…您的输入和示例输出是什么。你应该得到整数。我猜你在VisualStudio中点击了“十六进制”按钮,显示了十六进制的输出。只是整数,我已经更新了question@RoadBump,那么如何将它再次更改为十六进制?不知道这是否是一个很好的解决方案。但是您可以使用.ToString(“X”)将int转换为十六进制…是的,如果您只输入一个字符。但在这种情况下,分组的原因是什么?@Alex,我正在分组文本。请看一看我在原始帖子中的编辑。是的,但是你最终得到的是一本
字典,而不是
字典。对不起,亚历克斯,这是我的错误。我的印象是,既然你不能用整型来显示十六进制值,就可以使用字符串。但我也会向你投一票,亚历克斯!是,如果您只输入一个字符。但在这种情况下,分组的原因是什么?@Alex,我正在分组文本。请看一看我在原始帖子中的编辑。是的,但是你最终得到的是一本
字典,而不是
字典。对不起,亚历克斯,这是我的错误。我的印象是,既然你不能用整型来显示十六进制值,就可以使用字符串。但我也会向你投一票,亚历克斯!