cocos creator UUID decodeUuid

业务需求,需要替换指定文件的指定数据,看目录结构需要逆UUID,找了一下引擎decodeuuid 的地方,贴出来记录一下

文件名 decode-uuid.ts

const BASE64_KEYS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

const values:number[] = new Array(123); // max char code in base64Keys

for (let i = 0; i < 123; ++i) { values[i] = 64; } // fill with placeholder('=') index

for (let i = 0; i < 64; ++i) { values[BASE64_KEYS.charCodeAt(i)] = i; }

-------------------------------------------------------------------------------------------------------------------------------------------------------

const HexChars = '0123456789abcdef'.split('');

const _t = ['', '', '', ''];

const UuidTemplate = _t.concat(_t, '-', _t, '-', _t, '-', _t, '-', _t, _t, _t);

const Indices = UuidTemplate.map((x, i) => (x === '-' ? NaN : i)).filter(isFinite);


export default function decodeUuid (base64: string) {

    const strs = base64.split('@');

    const uuid = strs[0];

    if (uuid.length !== 22) {

        return base64;

    }

    UuidTemplate[0] = base64[0];

    UuidTemplate[1] = base64[1];

    for (let i = 2, j = 2; i < 22; i += 2) {

        const lhs = BASE64_VALUES[base64.charCodeAt(i)];

        const rhs = BASE64_VALUES[base64.charCodeAt(i + 1)];

        UuidTemplate[Indices[j++]] = HexChars[lhs >> 2];

        UuidTemplate[Indices[j++]] = HexChars[((lhs & 3) << 2) | rhs >> 4];

        UuidTemplate[Indices[j++]] = HexChars[rhs & 0xF];

    }

    return base64.replace(uuid, UuidTemplate.join(''));

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容