byte[]를 string으로 바꾸어주는 함수들이 여러개가 있는데 자주 보이는 건 아래의 두개가 아닐까 생각된다.
하지만 둘 다 위험한 함수(?) 란 건 변하지 않는다.. ㅠㅠ
System.Text.Encoding.UTF8.GetString()
[링크 : https://docs.microsoft.com/ko-kr/dotnet/api/system.text.encoding.utf8?view=net-5.0]
System.Text.Encoding.ASCII.GetString()
ASCIIEncoding 는 오류 검색을 제공 하지 않습니다. 16 진수 0x7F 보다 큰 바이트는 유니코드 물음표 ("?")로 디코딩됩니다. |
[링크 : https://docs.microsoft.com/ko-kr/dotnet/api/system.text.asciiencoding.getstring?view=net-5.0]
그러니까 char[]/byte[]를 함수들이 string으로 받는다고 변환해서 보내주면 개판을 친다는 의미
하다하다 안되서 혹시나 이상하게 보내오나 wireshark로 패킷을 보니 정상 -_-
아래 코드에 의해 byte[]를 string으로 변환하고 console 창으로 출력한 결과
ff d8 ff e0 00 10 4a 46 49 46 으로 시작하는 JPEG 헤더가
3f 3f 3f 3f 00 10 4a 46 49 46 으로 바뀌어 버렸다.
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine("Received: {0}", responseData);
그러니까.. 바이너리 데이터는 꾿꾿이 byte[]로 주고 받아야 할 듯.. ㅠㅠ
'Programming > c# & winform' 카테고리의 다른 글
c# richtextbox 글씨 색상 입히기 (0) | 2021.05.24 |
---|---|
c# named argument (0) | 2021.01.06 |
c# vertical tab (0) | 2020.11.26 |
c# rest API client (0) | 2020.11.25 |
c# telnet, ssh client (0) | 2020.11.24 |