Files
esengine/packages/core/src/Utils/BinarySerializer.ts

26 lines
684 B
TypeScript

import { strToU8, strFromU8, zlibSync, unzlibSync } from 'fflate';
/**
* 二进制序列化器
* 使用zlib压缩JSON数据
*/
export class BinarySerializer {
/**
* 将对象编码为压缩的二进制数据
*/
public static encode(value: any): Uint8Array {
const jsonString = JSON.stringify(value);
const utf8Bytes = strToU8(jsonString);
return zlibSync(utf8Bytes);
}
/**
* 将压缩的二进制数据解码为对象
*/
public static decode(bytes: Uint8Array): any {
const decompressed = unzlibSync(bytes);
const jsonString = strFromU8(decompressed);
return JSON.parse(jsonString);
}
}