2014-07-01 9 views
0

어딘가에서이 코드를 가져 와서 16 진수 문자열을 일반 문자열로 변환합니다. 그러나 나는 이것을 이해할 수 없다. 아무도 이것을 설명 할 수 있습니까? 이 문자열에서 첫 번째 줄은 문자열의 각 두 문자를 가져 와서 바이트로 변환합니다. 하지만 바이트 배열의 길이가 절반 밖에되지 않는 이유는 무엇입니까?16 진수 문자열을 C에서 일반 문자열로 변환 #

때때로 Inputstring 길이가 350이고, 바이트 길이가 175이고, char 길이가 87.5이고 char 배열이 87에만 할당되며, 바이트 배열의 모든 문자를 보유 할만큼 충분하지 않을 때가 있습니다. 출력은 원래의 절반 길이 있도록 .Where(x => x % 2 == 0)는 짝수 인덱스들만 값에 입력 된 문자열을 필터링하기 때문이다

public static string HextoString(string InputText) 
{ 

    byte[] bb = Enumerable.Range(0, InputText.Length) 
       .Where(x => x % 2 == 0) 
       .Select(x => Convert.ToByte(InputText.Substring(x, 2), 16)) 
       .ToArray(); 
    //return Convert.ToBase64String(bb); 
    char[] chars = new char[bb.Length/sizeof(char)]; 
    System.Buffer.BlockCopy(bb, 0, chars, 0, bb.Length); 
    return new string(chars); 
} 

답변

관련 문제