HEX为Base64转换为JavaScript [英] HEX to Base64 converter for JavaScript
本文介绍了HEX为Base64转换为JavaScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
任何人都知道的JavaScript code的一个好片断的转换 HEX EN codeD字符串为的base64 EN codeD字符串?
解决方案
如果(!window.atob){
VAR tableStr =ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /;
变种表= tableStr.split(); window.atob =功能的(Base64){
如果(/(=[^=]+|={3,})$/.test(base64))抛出新的错误(字符串包含无效字符);
的base64 = base64.replace(/ = /克,);
变种N = base64.length&安培; 3;
如果(N === 1)抛出新的错误(字符串包含无效字符);
对于(VAR I = 0,J = 0,len个= base64.length / 4,仓位= []; I< LEN ++我){
VAR一个= tableStr.indexOf(的base64 [J ++] ||A),B = tableStr.indexOf(的base64 [J ++] ||A);
变种C = tableStr.indexOf(的base64 [J ++] ||A),D = tableStr.indexOf(的base64 [J ++] ||A);
如果((A | B | C | D)℃下)抛出新的错误(字符串包含无效字符);
仓[bin.length] =((A&下; 2)|(B个→4))及255;
仓[bin.length] =((b将; 4;)|(c取代;&→2))及255;
仓[bin.length] =((℃下6;)| D)及255;
};
返回String.fromChar code.apply(NULL,宾).substr(0,bin.length + N - 4);
}; window.btoa =功能(斌){
对于(VAR I = 0,J = 0,LEN = bin.length / 3,基数64 = []; I< LEN ++我){
VAR一个= bin.char $ C $猫(J ++),B = bin.char $ C $猫(J ++),C = bin.char $ C $猫(J ++);
如果((A | B | C)> 255)抛出新的错误(字符串包含无效字符);
的base64 [base64.length] =表[A>> 2] +表[((一个或下; 4;)及63)| (B个→4)] +
(isNaN(二)=:表[((b将; 2)及63)|(c取代;→6)])+
(?isNaN(B + C)=:表[C和63]);
}
返回base64.join();
};}功能hexToBase64(STR){
返回BTOA(String.fromChar code.apply(NULL,
str.replace(/ \\ r | \\ N /克,).replace(?/([\\ DA-FA-F] {2})/克,0X $ 1).replace(/ + $ /, )。分裂( ))
);
}功能base64ToHex(STR){
对于(VAR I = 0,仓位= ATOB(str.replace(/ [\\ r \\ n] + $ /,)),十六进制= []; I< bin.length ++我){
VAR TMP = bin.char $ C $猫(I)的ToString(16);
如果(tmp.length === 1)TMP =0+ TMP;
十六进制[hex.length] = tmp目录;
}
返回hex.join();
}
Anyone know of a good snippet of JavaScript code to convert HEX encoded strings to base64 encoded strings?
解决方案
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(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" "))
);
}
function base64ToHex(str) {
for (var i = 0, bin = atob(str.replace(/[ \r\n]+$/, "")), 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(" ");
}
这篇关于HEX为Base64转换为JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文