C#에서 Byte 배열을 String으로 String을 Byte 배열로 변환해야 하는 일이 종종 일어난다.
이때, 주의할 사항이 있는데 C#에서 Byte 배열을 String으로 변환할 때 주로 아래와 같은 형식을 사용하게 되는데,
string temp = Encoding.Default.GetString(Byte[]);
이때 Byte[] 뒷부분에 0으로 채워져 있을 경우 String 형식은 그냥 잘라버리는 게 아니라 \0 값으로 채워진 String으로 변환하게 된다.
예를 들어,
byte[] byteArr = {'a', 'b', 'c', 0, 0}; 일 경우
string temp = Encoding.Default.GetString(byteArr); 을 하게 되면,
temp 값은 'abc\0\0'으로 생성된다.
해결 방법은 GetString(array, index, count) 이렇게 인자를 정확히 넣어서 문자열이 끝나는 부분까지 지정해주면 괜찮지만 때로 '\0' 값의 영향을 받아 콘솔 로그로 출력되지 않는 문제를 겪을 수 있다. (로그 출력 시 오류 발생)
다른 방법으로는 String 변환 시 TrimEnd 메서드를 사용하여 해결하는 방법이 있다.
string temp = Encoding.Default.GetString(byteArr).TrimEnd('\0'); 를 하게 되면 '\0'의 문자를 제한 문자열 값을 가질 수 있게 된다.
'공부중 > 작업하기' 카테고리의 다른 글
| [Linux] 자체 서명 사설 SSL 인증서 만들기 (0) | 2022.09.07 |
|---|---|
| [Windows] OpenJDK 18 다운로드 및 환경설정 (0) | 2022.08.04 |
| [C#] SubString - 문자열 뒤부터 자르기 (0) | 2022.08.03 |
| [C#] Lock (0) | 2022.07.29 |
| [Linux] VMWare - CentOS 8 설치 (0) | 2022.07.28 |