2013-08-14 6 views
0

나는 정수 (아래의 i)를 읽고있다.변환 int32 -> 16 진수 -> 문자열

int i = 99; 
string hex = 99.ToString("X"); //"63" 
string readable = hex.FromHex(); //"c" 

public static string FromHex(this string hex) 
{ 
    hex = hex.Replace("-", ""); 
    byte[] raw = new byte[hex.Length/2]; 
    for (int i = 0; i < raw.Length; i++) 
    { 
     raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16); 
    } 
    return Encoding.UTF8.GetString(raw); 
} 

그러나 나는이 작업을 수행하는 쉬운 방법이 생각 : 나는 다음을 수행 한 후 난 문자로의 변환하려면?

답변

2

당신은 char로 바로 변환 할 수 있습니다 :

char myChar = (char)99; 

또는 사용을 :

char myChar = Convert.ToChar(99); 
+0

내가 틀릴 수도 있지만 UTF8 인코딩을 사용하여 디코딩한다고 생각하지는 않지만 UTF16을 사용한다고 생각합니다. 'c'와 같은 평범한 캐릭터 만 다룰 지 중요하지 않습니다. –

+0

글쎄, 이것은'c'와 같은 보통의 문자들에 대해서 작동합니다. 나는 (Johan이 더 언급하지 않았기 때문에) 그럴 것이라고 생각한다. – Zbigniew

+0

다른 문자에도 사용할 수 있습니다 (예 : '99'를'1337'로 바꿀 수 있습니다. 그것은'Թ'문자를 생성합니다. – Zbigniew

1

int i = 99; 
var bits = BitConverter.GetBytes(i); 
Console.Write("Char: {0}", Encoding.UTF8.GetString(bits)); 
1

이 작동합니다 시도 UTF8 인코딩 가정 :

,473,

하지만이 항목을 실행할 기계의 엔디안은주의해야합니다.