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. Я не знаю, каким должно быть правильное поведение.
Спасибо