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);
}