C++ В процессе реализации столкнулся с ситуацией что в разных местах приходится использовать инты разной длинны. Т.е. встречаются 2,3,4,5 байтные инты. В то время как прочесть 2,4 байтные не есть проблема (КО как бы подсказывает), то с нестандартными длиннами все не так :) Как правило сами значения находятся в целостном потоке данных. На текущий момент я решаю это банальным копирование побайтовым в переменную нужного типа, что то вроде того:
uint32_t var;
uint8_t *p = &var;
p[0] = data[offset];
p[1] = data[offset+1];
p[2] = data[offset+2];
p[3] = 0x00;