필자는 처리방법을 기준으로 데이터를 스트링 데이터와 바이너리 데이터로 나눈다

스트링 데이터도 인코딩 이슈가 있지만

바이너리 데이터는 그보다 더 많은 이슈가 발생한다


특히 \x00이나 \x27 등을 특수문자로 인식해서 발생하는 이슈가 많다

1. 데이터 중간에 \x00이 있을경우, NULL로 인식하여 데이터의 끝으로 인식한다. 또는 \x00이 생략되는 경우도 있다

2. linux shell에서 바이너리 데이터를 파라미터로 사용할 때 \x27을 quote( ' )로 인식하여 syntax error가 발생한다

3. JSON, XML은 binary data를 지원하지 않는다

4. 데이터 타입과 byte order 이슈가 있다


그러므로 바이너리 데이터를 처리할 때는 위와 같은 이슈를 고려하고 디버깅을 잘 해야한다

이 외에 스트링 데이터와 바이너리 데이터의 차이점으로, 

C언어에서 문자열은 \0을 통해 길이를 체크하므로 별도로 길이 데이터를 줄 필요 없지만

바이너리 데이터는 그럴 수 없으므로 길이 데이터를 별도로 전달해야 한다는 차이점이 잇다


결론적으로, 바이너리 데이터를 처리할 때 일반적인 스트링 데이터처럼 생각하면 생각치못한 이슈들이 발생하므로

구분해서 생각하도록 하자



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/