2013-02-22 2 views
0

문자로 사전에 문자를 그룹화하고 각 문자의 유니 코드 코드 포인트를 반환하려고합니다. 다음 코드를 사용하고 있습니다.16 진수 형식의 유니 코드 코드 포인트가있는 chacartes 사전에 문자로 문자 그룹화

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

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

이 코드는 10 진수 형식의 유니 코드 코드 포인트를 반환하지만 16 진수 형식으로 지정합니다. 어떤 도움을 주시겠습니까?

편집 :

예 : 입력 할 출력 65

있어야하지 41?

오른쪽 용액

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

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

귀하의 의견 및 샘플 출력 무엇인지. 정수를 가져와야합니다. – Igoy

+2

Visual Studio에서 "Hex"버튼을 클릭했다고 가정하면 16 진수로 출력됩니다. 그것은 단지 정수입니다. – RoadBump

+0

질문을 업데이트했습니다. – FSm

답변

1
Int i = 64; 
string hex = i.ToString("X"); 
+1

신용 우리 둘을위한 : – FSm

+0

더 나은 얻을 수 없다 :) – Evelie

+0

이것은 귀하의 방법으로 작동하지 않습니다. 업데이트 된 방법을 확인하십시오. –

2

Aa 소수점 코드로 (97)를 가지며, 소수 부호로서 (65)를 갖는다. 또한 A 문자는 16 진수 코드로 41이고 8 진수 코드로는 101입니다. 보세요 here.

당신은 당신의 방법에 두 번째 매개 변수를 추가하고 상황에 따라 호출 할 수 있습니다 :

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); 
    } 
} 
관련 문제