C / C ++ упаковывает подписанный символ в int

Мне нужно упаковать четыре байта со знаком в 32-битный целочисленный тип. вот к чему я пришел:

int32_t byte(int8_t c) { return (unsigned char)c; }

int pack(char c0, char c1, ...) {
  return byte(c0) | byte(c1) << 8 | ...;
}

это хорошее решение? Это портативный (не в смысле общения)? Есть ли готовое решение, возможно, повысить?

Больше всего меня беспокоит проблема порядка следования битов при преобразовании отрицательных битов из char в int. Я не знаю, каким должно быть правильное поведение.

Спасибо

Ответы на вопрос(6)

Ваш ответ на вопрос