Extensión firmada de 24 bits a 32 bits en C ++

Tengo 3 bytes sin firmar que vienen por el cable por separado. [byte1, byte2, byte3]

Necesito convertirlos a 32 bits con signo, pero no estoy muy seguro de cómo manejar la firma de los valores negativos.

Pensé en copiar los bytes a los 3 bytes superiores en int32 y luego cambiar todo a la derecha, pero leí que esto puede tener un comportamiento inesperado. ¿Hay una manera más fácil de manejar esto?

La representación está usando el cumplido de dos.

Respuestas a la pregunta(5)

Su respuesta a la pregunta