I 형식으로 저 UTC 날짜를 송신 임베디드 장치 (일자가 4 바이트)가 : 서버 I 인덱스에서 시작 바이트를 수신하고 socket_buf
에 저장 AM 및인코딩 디코딩 바이트
buffer.push_back((BYTE)(time_utc & 0x000000FF));
buffer.push_back((BYTE)((time_utc & 0x0000FF00) >> 8));
buffer.push_back((BYTE)((time_utc & 0x00FF0000) >> 16));
buffer.push_back((BYTE)((time_utc & 0xFF000000) >> 24));
0-3 다음과 같은 논리
mypkt.dateTime = ((socket_buf[0] << 24) +
(socket_buf[1 ] << 16) + socket_buf[2] << 8) +
(socket_buf[3] << 0));
를 사용하여 디코딩하지만 내가 할 날짜가 정확하지 않기 때문에 제대로 디코딩하고 경우에 나는 확실하지 않다. 아무도 나에게 그것을 디코딩의 올바른 방법을 제안 할 수 있습니까? 나는 리눅스 명령 (16711840은 디코딩으로 얻을 수)을 사용하여 날짜를 디코딩하고있다 :
#date -d @16711840
두 기계 모두 엔디안 유형입니까? –
이것은 네트워크에서 바이트 정렬과 관련이 있다고 생각합니다. 네트워크 바이트 순서는 빅 엔디안이며 대부분의 인텔 프로세서는 리틀 엔디안입니다.> 여기가 오류 일 수 있습니다. C 함수'htons()'와'ntohs()'를 보셨습니까? – jcxz
하지만 다른 데이터도 보내고 있는데, 나는 올바르게 추출하려고합니다. socket_buf에서 정확한 디코딩을 할 때 내 논리가 더 마음에 듭니다. 그들이 장치에서했던 것처럼 & -ing을해야하는지 잘 모르겠습니다. – Rohit