Post

서버에서 패킷을 받아서 데이터 파서 중 이해가 안가는 부분이 생겼다.
문자열 배열이 있을 때 2Byte씩 파싱하는 중이었다.
그런데 2byte 파싱한 데이터가 결과가 내 예상과는 달랐다.
확인한 데이터는 배열 0번째는 154, 배열 1번째는 8이었다.

예시소스코드
unsigned char tempString[2];
tempString[0] = 154;
tempString[1] = 8;
unsigned short data;
memcpy(&data, tempString, 2);

154는 2진수로 10011010
8은 2진수로 1000
결과는 10011010 1000 = 100110101000 = 2472인 줄 알았다
그런데 값이 안맞아서 확인해보니
tempString[0]이 0번째이므로 0~255값을 나타냈기 때문에 뒤로 가야한다.
그래서 10011010 1000 자리를 바꿔줘서 합쳐줬더니 알맞은 값이 나온다.
1000 10011010 100010011010 = 2202

▲ top