/* 00000001 10000000 | 00000001 10000001 0000001 0000000 | 0000001 0000001 0000001 0000000 | 00000010000001 128 | 129 */ #include #include int main() { constexpr int size = 2; char input[size] = {0b00000001, 0b10000000}; int64_t res = 0; for (int i = 0; i < size; ++i) { int64_t byte = 0; std::memcpy(&byte, &input[i], sizeof(char)); const bool eof = byte & (1 << 7); byte = byte & ~(1 << 7); res <<= i * 7; res |= byte; if (eof) break; } }