zoukankan      html  css  js  c++  java
  • js的hex转base64

    if (!window.atob) {
                var tableStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
                var table = tableStr.split("");
    
                window.atob = function (base64) {
                    if (/(=[^=]+|={3,})$/.test(base64)) throw new Error("String contains an invalid character");
                    base64 = base64.replace(/=/g, "");
                    var n = base64.length & 3;
                    if (n === 1) throw new Error("String contains an invalid character");
                    for (var i = 0, j = 0, len = base64.length / 4, bin = []; i < len; ++i) {
                        var a = tableStr.indexOf(base64[j++] || "A"), b = tableStr.indexOf(base64[j++] || "A");
                        var c = tableStr.indexOf(base64[j++] || "A"), d = tableStr.indexOf(base64[j++] || "A");
                        if ((a | b | c | d) < 0) throw new Error("String contains an invalid character");
                        bin[bin.length] = ((a << 2) | (b >> 4)) & 255;
                        bin[bin.length] = ((b << 4) | (c >> 2)) & 255;
                        bin[bin.length] = ((c << 6) | d) & 255;
                    };
                    return String.fromCharCode.apply(null, bin).substr(0, bin.length + n - 4);
                };
    
                window.btoa = function (bin) {
                    for (var i = 0, j = 0, len = bin.length / 3, base64 = []; i < len; ++i) {
                        var a = bin.charCodeAt(j++), b = bin.charCodeAt(j++), c = bin.charCodeAt(j++);
                        if ((a | b | c) > 255) throw new Error("String contains an invalid character");
                        base64[base64.length] = table[a >> 2] + table[((a << 4) & 63) | (b >> 4)] +
                            (isNaN(b) ? "=" : table[((b << 2) & 63) | (c >> 6)]) +
                            (isNaN(b + c) ? "=" : table[c & 63]);
                    }
                    return base64.join("");
                };
    
            }
    
            function hexToBase64(str) {
                return btoa(String.fromCharCode.apply(null,
                    str.replace(/
    |
    /g, "").replace(/([da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" "))
                );
            }
    
            function base64ToHex(str) {
                for (var i = 0, bin = atob(str.replace(/[ 
    ]+$/, "")), hex = []; i < bin.length; ++i) {
                    var tmp = bin.charCodeAt(i).toString(16);
                    if (tmp.length === 1) tmp = "0" + tmp;
                    hex[hex.length] = tmp;
                }
                return hex.join(" ");
            }
  • 相关阅读:
    Stm32CubeMX5 配置 STM32的串口DMA接受方式 --- 基于 stm32f051k8u6
    Stm32 控制1.44寸液晶显示图片 基于stm32f051k8u6
    makefile自动编译
    Stm32CubeMX5 创建LED控制工程
    ARM 汇编与C之间 的调用
    shell 脚本文件类型.sh ,变量
    bzoj3589 动态树 求链并 容斥
    bzoj2287【POJ Challenge】消失之物 缺一01背包
    bzoj2916: [Poi1997]Monochromatic Triangles 思路
    [NOI2010]超级钢琴 主席树
  • 原文地址:https://www.cnblogs.com/IWings/p/7521907.html
Copyright © 2011-2022 走看看