а что не так?
*(int*)foo.data()
извлекает примерно 32 бита. Ну и там дальше ещё пара пунктов по мелочи, типа отсутствия гарантии выравнивания, зависимости от порядка байт используемой платформы, опять же беззнаковость извлечённого числа.Массив int8_t, а не uint8_t
uint8_t foo[] = {7, 7};
int i = ((foo[0] + 256 * foo[1]) ^ 0x8000) - 0x8000;
как будет выглядеть эта формула, если допустим массив будет из 4-х цифр?
foo[0] + 256 * (foo[1] + 256 * (foo[2] + 256 * foo[3]));
{foo[0] + 256 * foo[1], foo[2] + 256 * foo[3]};
как называется эта конвертация?