16 비트 2의 보수를 두 부분으로 전달하는 독점 프로토콜로 작업하고 있습니다. LSB가 먼저 전송 된 다음 MSB가 전송됩니다. 원래 값을 올바르게 복원하는 다음 코드가 있습니까?16 비트 부호있는 정수 (2의 보수)의 MSB와 LSB를 결합하십시오.
unsigned char message[BLK_SIZE];
// read LSB to message[0] and MSB to message[1]
short my_int = (message[1] << 8) | message[0];
나에게 확인을 보이는 - 당신이 정확하지 않을 수 있다고 생각하게 무엇? –
네, 괜찮아 보입니다. 특정 응용 프로그램의 컨텍스트에서 정상인지 여부를 알려주는 테스트를 작성해야합니다. –
@Paul : 아아, 내가 언급 했어야합니다. 나는 확실하지 않다. 왜냐하면 : 1) IIRC short는 16 비트로 보장되지 않는다. 8 또는 32의 경우 어떻게됩니까? 2) 서명되지 않은 char에서 작동하고 예상대로 짧은 동작을 할당합니까? – Marco