import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;


@ccclass('GlobalTool')
export class GlobalTool {

    public static CrcDecode(data: Uint8Array, crc32: number): void {
        const num: number = 2175242257; // 2175242257L in hexadecimal
        const dataView = new DataView(
            data.buffer,
            data.byteOffset,
            data.byteLength
        );

        for (let i = 0; i < data.length; i += 4) {
            // Ensure we don't read beyond the end of the data
            if (i + 4 > data.length) break;

            // Read a 32-bit integer (little endian) from the buffer
            let anInt = dataView.getUint32(i, true);

            // Perform the XOR operations
            let val = anInt ^ num ^ crc32;

            // Rotate right 6 bits
            let jiemi = (val >>> 6) | (val << (32 - 6));

            // Write the result back into the buffer
            dataView.setUint32(i, jiemi, true);
        }
    }



    //字节数组转string
    public static uint8ArrayToString(data: Uint8Array, Code?: string): string {
        if (!Code) Code = 'utf-8';
        const decoder = new TextDecoder(Code); // 默认使用 'utf-8' 编码
        return decoder.decode(data);
    }
}