颜色格式转换:HEX与signed int32 Big-endian的相互转化

295 阅读1分钟

HEX转signed int32 Big-endian

HEX:十六进制颜色值;signed int32 Big-endian:有符号32位大端存储

    function hexToSigned(color: string): number {
        let a = parseInt(color.substring(0, 2), 16);
        let r = parseInt(color.substring(2, 4), 16);
        let g = parseInt(color.substring(4, 6), 16);
        let b = parseInt(color.substring(6, 8), 16);
        return ((a << 24) + (r << 16) + (g << 8) + (b << 0));
    }

signed int32 Big-endian 转 HEX

    function zeroPaddedHex(n) {
        let result = n.toString(16);
        // 边界情况,toString(16)可能要补零的
        if (result.length == 1) {
            result = '0' + result;
        }
        return result;
    }
    function argbIntToHex(i) {
        let hex = '';
        hex += zeroPaddedHex(i >>> 24 & 0xFF);
        hex += zeroPaddedHex(i >>> 16 & 0xFF);
        hex += zeroPaddedHex(i >>> 8 & 0xFF);
        hex += zeroPaddedHex(i >>> 0 & 0xFF);
        return hex.toUpperCase();
    }