Public
Back
Version 8
5/16/2024
type FrequentieTable = Record<string, number>;
type IntermediaryNode = [string, number, Node[]];
type LeafNode = [string, number];
type Node = IntermediaryNode | LeafNode;
type HuffmanTree = [IntermediaryNode];
type Encoding = number[];
type EncodedData = number[];
type EncodingTable = Record<string, Encoding>;
export class BinaryReader {
protected chunk: number;
protected pos: number;
protected bitPos: number;
protected bitCount: number;
view: DataView;
constructor(arrayBuffer: ArrayBuffer) {
this.view = new DataView(arrayBuffer);
this.pos = 0;
this.bitPos = -1;
this.chunk = 0;
this.bitCount = 0;
}
protected getData(type = "Uint8") {
if (this.view.byteLength > this.pos) {
this.bitPos = -1;
// @ts-ignore
return this.view[`get${type}`](this.pos++);
}
throw new RangeError();
}
Updated: May 16, 2024