asn1-ts
Version:
ASN.1 encoding and decoding, including BER, CER, and DER.
17 lines (16 loc) • 465 B
JavaScript
import { FALSE_BIT } from "../macros.mjs";
export default function packBits(bits) {
const bytesNeeded = Math.ceil(bits.length / 8);
const ret = new Uint8Array(bytesNeeded);
let byte = -1;
for (let bit = 0; bit < bits.length; bit++) {
const bitMod8 = bit % 8;
if (bitMod8 === 0) {
byte++;
}
if (bits[bit] !== FALSE_BIT) {
ret[byte] |= (0x01 << (7 - bitMod8));
}
}
return ret;
}