javascript-binary-converter
Version:
A utility package to quickly handle and convert various Javascript binary objects
76 lines (55 loc) • 1.94 kB
text/typescript
import { BlobCreationConfig, BytesArray, ImageCreationConfig, TypedArray } from '../sharedTypes'
import { bytesToIntegers, typedArrayToBytes } from '../utils/binary'
import { getBlobClass } from '../utils/crossPlatform'
import { binaryToImage } from '../utils/image'
export default class TypedArrayConverter {
constructor(private original: TypedArray) { }
toUint8Array() {
return new Uint8Array(this.original.buffer)
}
toInt8Array() {
return new Int8Array(this.original.buffer)
}
toInt16Array() {
const int16 = new Int16Array(this.original.buffer)
return int16;
}
toUint16Array() {
const uint16 = new Uint16Array(this.original.buffer)
return uint16
}
toInt32Array() {
return new Int32Array(this.original.buffer)
}
toUint32Array() {
return new Uint32Array(this.original.buffer)
}
toBigUint64Array() {
return new BigUint64Array(this.original.buffer)
}
toBigInt64Array() {
return new BigInt64Array(this.original.buffer)
}
toFloat32(){
return new Float32Array(this.original.buffer)
}
toText() {
const decoder = new TextDecoder()
return decoder.decode(this.original)
}
async toBlob(config?:BlobCreationConfig): Promise<Blob> {
const BlobClass =await getBlobClass()
return new BlobClass([this.original],config)
}
async toImage(config?: ImageCreationConfig) {
return binaryToImage(await this.toBlob(), config && config)
}
toBytes():BytesArray{
const bytes = this.original instanceof Uint8Array ? typedArrayToBytes(this.original) : typedArrayToBytes(new Uint8Array(this.original))
return bytes;
}
toDecimalBytes(){
const bytes = this.toBytes();
return bytesToIntegers(bytes)
}
}