27#ifndef ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_GETTERS_H
28#define ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_GETTERS_H
42inline std::vector<bool> getBitString(
const std::vector<uint8_t>& buffer,
const int bits_unused) {
45 const int bits_per_byte = 8;
46 const int n_bytes = buffer.size();
47 const int n_bits = n_bytes * bits_per_byte;
48 std::vector<bool> bits;
49 bits.resize(n_bits - bits_unused, 0);
52 for (
int byte_idx = 0; byte_idx < n_bytes; byte_idx++) {
55 for (
int bit_idx_in_byte = 0; bit_idx_in_byte < bits_per_byte; bit_idx_in_byte++) {
58 int bit_idx = bit_idx_in_byte + byte_idx * bits_per_byte;
59 if ((byte_idx + 1) >= n_bytes && (bit_idx_in_byte + bits_unused) >= bits_per_byte)
break;
62 bool byte_has_true_bit =
static_cast<bool>(buffer[byte_idx] & (1 << (bits_per_byte - 1 - bit_idx_in_byte)));
63 if (byte_has_true_bit) bits[bit_idx] =
true;