Ну, самое простое решение общего назначения здесь будет
a = b1 * 256 + b2;
aka
a = (b1 << 8) | b2;
Затем, чтобы получить их обратно (при условии, что у вас есть неподписанные байты):
b1 = (a >> 8) & 0xff;
b2 = a & 0xff;
Это создаст 2-байтовое значение для всех входных данных, если только вы не сочтете, что результаты b1=0, b2=*
равны одному байту (поскольку каждое значение меньше 256).Вы можете потенциально чередовать вещи, так что младшие четыре бита каждого входного байта заканчиваются младшими восемью битами вывода, так что вы получите значение менее 256 для (b1 < 16, b2 < 16
).Честно говоря, проще всего всегда рассматривать его как 2-байтовое значение, используя вышеуказанное смещение.
Использование 2 байтов - это минимум, и это легко достижимо.
Если это не то, что выищите, пожалуйста, дайте больше информации.
РЕДАКТИРОВАТЬ: Я предполагал, что вы ищете фиксированную двоичную длину.Если вам нужна фиксированная десятичная длина, используйте решение фалагара.