0

テキストを文字ごとに辞書にグループ化し、各文字のUnicodeコードポイントを返そうとしています。私は次のコードを使用しています

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

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

このコードは、文字のUnicodeコードポイントを10進形式で返しますが、16進形式である必要があります。何か助けてください?

編集:

例:入力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

A10進コードとして65、10進コードaとして97を持っています。また、A文字には16進コードと8進コードとして41があり101ます。こちらをご覧ください。

メソッドに2番目のパラメーターを追加し、コンテキストに応じて呼び出すことができます。

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 に答える