C++로 직렬 프로그램을 찾으려고합니다. 나는 여러 개의 uint8_t와 여러 개의 uint16_t로 구성된 char 배열을 보내고있다. 다른 쪽 끝은 처음 LSB와 난 그냥 '돈 몇 가지 이유로 16 비트 정수를 기대하고있다부호없는 int 변환 C++
buf[0]= var & 0xFF; buf[1]= var >> 8;
및
buf[0]= (uint8_t)(var & 0xFF); buf[1]= var >> 8;
이러한 차이는 (있는 경우) 무엇
char buf[3];
uint16_t var=1500;
나는 예상 된 직렬 쓰기를 얻고 있다고 생각하지 않는다. 나는 이것이 일어날 수있는 많은 이유가 있음을 알고있다. 그러나 나는 단지 개념에 대한 나의 머리를 여기에서 감쌀려고 노력하고있다.
다른 점은 무엇입니까? 그 중 하나는'uint8_t'에 대한 C 스타일의 캐스트를 포함하고 다른 하나는 그렇지 않습니다. 여기에 정말로 어떤 질문을 하시겠습니까? –
이 "다른 끝"은 아마도 보낸 사람과 다른 엔디안을 사용합니까? – orphen
나는 왜 당신이'var & 0xff'을하는지 궁금해. 암시 적/명시 적 캐스트가 이미 최상위 비트를 자르지 않습니까? –