Advanced Bint Usage
Learn advanced binary serialization patterns, optimization techniques, and large-scale data handling.
Custom Type Management
Understand and optimize type selection:
ts
import bint from "@briklab/net-t";
// Types are automatically selected
const instance = bint();
// Check what type each value uses
instance(42); // Uint8 (1 byte)
instance(256); // Uint16 (2 bytes)
instance(70000); // Uint32 (4 bytes)
instance(3.14159); // Float32 or Float64
instance(9007199254740992n); // BigInt64 (8 bytes)
console.log(`Stored ${instance.length} values`);
console.log(`Total size: ${instance.toBuffer().byteLength} bytes`);Batch Item Processing
Process large datasets efficiently:
ts
import bint from "@briklab/net-t";
class DataProcessor {
processBatch(numbers: number[]): ArrayBuffer {
const instance = bint();
numbers.forEach(num => instance(num));
return instance.toBuffer();
}
deserializeBatch(buffer: ArrayBuffer): void {
const instance = bint.fromBuffer(buffer);
for (const value of instance) {
console.log(value);
}
}
}
const processor = new DataProcessor();
const data = [1, 255, 256, 70000, 3.14];
const buffer = processor.processBatch(data);
console.log(`Serialized ${buffer.byteLength} bytes`);Live Demo - Binary Serialization
Console
No logs yet.
Real-time Data Stream
Stream data over network with minimal overhead:
ts
import bint from "@briklab/net-t";
class DataStream {
// Simulated WebSocket send
sendToRemote(numbers: number[]): void {
const instance = bint();
numbers.forEach(num => instance(num));
const buffer = instance.toBuffer();
console.log(`Sending ${buffer.byteLength} bytes over network`);
// websocket.send(buffer);
}
// Simulated WebSocket receive
receiveFromRemote(buffer: ArrayBuffer): void {
const instance = bint.fromBuffer(buffer);
console.log(`Received ${instance.length} values`);
for (const value of instance) {
console.log(`Processed: ${value}`);
}
}
}
const stream = new DataStream();
stream.sendToRemote([100, 200, 300, 3.14]);Time Series Data
Store time series data efficiently:
ts
import bint from "@briklab/net-t";
class TimeSeriesDB {
private instance = bint();
recordMetric(timestamp: number, value: number): void {
// Alternate: timestamp, value
this.instance(timestamp);
this.instance(value);
}
export(): ArrayBuffer {
return this.instance.toBuffer();
}
import(buffer: ArrayBuffer): Array<[number, number]> {
const data = bint.fromBuffer(buffer);
const timeSeries: Array<[number, number]> = [];
for (let i = 0; i < data.length; i += 2) {
timeSeries.push([data[i] as number, data[i + 1] as number]);
}
return timeSeries;
}
}
const db = new TimeSeriesDB();
db.recordMetric(1609459200, 95.5);
db.recordMetric(1609459260, 96.2);
const exported = db.export();Audio Sample Storage
Store audio samples with minimal space:
ts
import bint from "@briklab/net-t";
class AudioBuffer {
private instance = bint();
// Store normalized audio samples (-1 to 1 range)
addSamples(samples: number[]): void {
// Map -1...1 to 0...255 range for efficient storage
samples.forEach(sample => {
const normalized = Math.round((sample + 1) * 127.5);
this.instance(normalized);
});
}
export(): ArrayBuffer {
return this.instance.toBuffer();
}
import(buffer: ArrayBuffer): number[] {
const data = bint.fromBuffer(buffer);
const samples: number[] = [];
for (const value of data) {
// Map 0...255 back to -1...1 range
const sample = ((value as number) / 127.5) - 1;
samples.push(sample);
}
return samples;
}
}
const audio = new AudioBuffer();
audio.addSamples([0.5, -0.3, 0.8, -0.1]);Next Steps
- Getting Started: Back to basics
- Examples: Real-world use cases