C# 使用十六进制格式的Unicode代码点将文本按字符分组到chacartes字典中
我正在尝试将文本按字符分组到字典中,并返回每个字符的Unicode代码点。我正在使用以下代码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
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,我正在分组文本。请看一看我在原始帖子中的编辑。是的,但是你最终得到的是一本字典,而不是字典。对不起,亚历克斯,这是我的错误。我的印象是,既然你不能用整型来显示十六进制值,就可以使用字符串。但我也会向你投一票,亚历克斯!