Embalagem assinada C / C ++ char em int
Preciso compactar quatro bytes assinados no tipo integral de 32 bits. isto é o que eu vim para:
int32_t byte(int8_t c) { return (unsigned char)c; }
int pack(char c0, char c1, ...) {
return byte(c0) | byte(c1) << 8 | ...;
}
esta é uma boa solução? É portátil (não no sentido da comunicação)? existe uma solução pronta, talvez aumentar?
questão que mais me preocupa é a ordem dos bits na conversão de bits negativos de char para int. Não sei qual deve ser o comportamento correto.
obrigado