前端工具集1
base64转2进制(js)
// base64编码表
var map = {
"0": 52,
"1": 53,
"2": 54,
"3": 55,
"4": 56,
"5": 57,
"6": 58,
"7": 59,
"8": 60,
"9": 61,
"A": 0,
"B": 1,
"C": 2,
"D": 3,
"E": 4,
"F": 5,
"G": 6,
"H": 7,
"I": 8,
"J": 9,
"K": 10,
"L": 11,
"M": 12,
"N": 13,
"O": 14,
"P": 15,
"Q": 16,
"R": 17,
"S": 18,
"T": 19,
"U": 20,
"V": 21,
"W": 22,
"X": 23,
"Y": 24,
"Z": 25,
"a": 26,
"b": 27,
"c": 28,
"d": 29,
"e": 30,
"f": 31,
"g": 32,
"h": 33,
"i": 34,
"j": 35,
"k": 36,
"l": 37,
"m": 38,
"n": 39,
"o": 40,
"p": 41,
"q": 42,
"r": 43,
"s": 44,
"t": 45,
"u": 46,
"v": 47,
"w": 48,
"x": 49,
"y": 50,
"z": 51,
"+": 62,
"/": 63
};
function base64to2(base64_str,type) {
var len = base64_str.length * 0.75, // 转换为int8array所需长度
base64 = base64_str.replace(/=*$/, ''); // 去掉=号(占位的)
len = len - (base64_str.length - base64.length);
var int8 = new Uint8Array(len); //设置int8array视图(无符号)
var arr1, arr2, arr3, arr4, p = 0;
for (var i = 0; i < base64.length; i += 4) {
arr1 = map[base64[i]]; // 每次循环 都将base644个字节转换为3个int8array字节
arr2 = map[base64[i + 1]];
arr3 = map[base64[i + 2]];
arr4 = map[base64[i + 3]];
// 假设数据arr 数据 00101011 00101111 00110011 00110001
int8[p++] = arr1 << 2 | arr2 >> 4;
// 上面的操作 arr1向左边移动2位 变为10101100
// arr2 向右移动4位:00000010
// | 为'与'操作: 10101110
int8[p++] = arr2 << 4 | arr3 >> 2;
if (base64.length-4==i) {//最后末尾的“=”只是占位符,无意义,不处理
if (base64_str.length == base64.length){//相等表示无“=”
int8[p++] = arr3 << 6 | arr4;
}
}else{
int8[p++] = arr3 << 6 | arr4;
}
}
return int8;
}
arrayBuffer转base64(js)
function arrayBufferToBase64(buffer) { //arrayBuffer转base64
var binary = '';
var bytes = new Uint8Array(buffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return window.btoa(binary);
}
arrayBuffer转16进制(js)
function arrayBuffer2hex(buffer) {//二进制转十六进制
var hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function (bit) {
return ('00' + bit.toString(16)).slice(-2);
}
);
return hexArr.join('');
}
xml转json(js)
xotree库源代码地址:https://github.com/search?q=xotree&type=Code
function xml2json(new_data) {
if (typeof new_data == "string") {
var xotree = new XML.ObjTree();
return xotree.parseXML(new_data);
}
}
base64算法封装(js)
function Base64() { //base64算法封装
_keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
this.encode = function (input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = _utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
_keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
_keyStr.charAt(enc3) + _keyStr.charAt(enc4);
}
return output;
};
this.decode = function (input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = _keyStr.indexOf(input.charAt(i++));
enc2 = _keyStr.indexOf(input.charAt(i++));
enc3 = _keyStr.indexOf(input.charAt(i++));
enc4 = _keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = _utf8_decode(output);
return output;
};
_utf8_encode = function (string) {
string = string.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
};
_utf8_decode = function (utftext) {
var string = "",
c, c1, c2;
var i = 0;
c = c1 = c2 = 0;
while (i < utftext.length) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
} else if ((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i + 1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
} else {
c2 = utftext.charCodeAt(i + 1);
c3 = utftext.charCodeAt(i + 2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3&63));
i += 3;
}
}
return string;
};
}
获取指定范围随机数(js)
function randomFrom(lowerValue, upperValue) {
return Math.floor(Math.random() * (upperValue - lowerValue + 1) + lowerValue);
}
设备和浏览器判断(js)
function isIE() { //判断是否是IE浏览器且给出ie版本
var userAgent = navigator.userAgent;
var IE = userAgent.indexOf("edge") > -1 || userAgent.indexOf("compatible") > -1 || userAgent.indexOf("MSIE") > -1 || (userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11") > -1);
if (IE) {
if (navigator.userAgent.indexOf("rv:11.0") > -1 && navigator.userAgent.indexOf("NT 10") > -1) {
return "win10系统IE11";
} else if (navigator.userAgent.indexOf("rv:11.0") > -1) {
return "IE11";
} else if (navigator.userAgent.indexOf("edge") > -1) {
return "edge";
} else if (navigator.userAgent.indexOf("MSIE 10") > -1) {
return "IE10";
} else if (navigator.userAgent.indexOf("MSIE 9") > -1) {
return "IE9";
} else if (navigator.userAgent.indexOf("MSIE 8") > -1) {
return "IE8";
} else {
return "IE较低";
}
} else {
return false;
}
}
function detectOS(bool) {//判断设备系统类型
var sUserAgent = navigator.userAgent;
if (bool) {
if (/(iPhone|iPad|iPod|iOS)/i.test(sUserAgent)) {
return "IOS";
} else if (/(Android)/i.test(sUserAgent)) {
return "Android";
} else {
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
if (isMac) return "Mac";
var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
if (isUnix) return "Unix";
var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
if (isLinux) return "Linux";
if (isWin) {
var isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
if (isWin2K) return "Win2000";
var isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1;
if (isWinXP) return "WinXP";
var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
if (isWin2003) return "Win2003";
var isWinVista = sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
if (isWinVista) return "WinVista";
var isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
if (isWin7) return "Win7";
var isWin7 = sUserAgent.indexOf("Windows NT 6.3") > -1 || sUserAgent.indexOf("Windows 8") > -1;
if (isWin7) return "Win8";
var isWin7 = sUserAgent.indexOf("Windows NT 10.0") > -1 || sUserAgent.indexOf("Windows 10.0") > -1;
if (isWin7) return "Win10";
}
return "otherPC";
}
} else {
var flag = true;//PC端
var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod", "iOS"];
for (var index = 0; index < Agents.length; index++) {
if (sUserAgent.indexOf(Agents[index]) > -1) {
flag = false;//移动端
}
}
return flag;
}
}
function myBrowser() { //判断浏览器类型
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1;
if (isOpera) {
return "Opera"
}; //判断是否Opera浏览器
if (userAgent.indexOf("Firefox") > -1) {
return "FF";
} //判断是否Firefox浏览器
if (userAgent.indexOf("Chrome") > -1 || userAgent.indexOf("WebKit") > -1) {
return "Chrome";
}
if (userAgent.indexOf("Safari") > -1) {
return "Safari";
} //判断是否Safari浏览器
if (userAgent.indexOf("compatible") > -1 || userAgent.indexOf("MSIE") > -1 || (userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1) > -1) {
return "IE";
}; //判断是否IE浏览器
}
function typeIphone() { //判断ios版本
var uas = navigator.userAgent;
var a = uas.match(/OS 7_[1-9] /i);
var b = uas.match(/OS 7_[1-9]_[0-9] /i);
var c = uas.match(/OS 8_[0-9] /i);
var d = uas.match(/OS 8_[0-9]_[0-9] /i);
var c1 = uas.match(/OS 9_[0-9] /i);
var d1 = uas.match(/OS 9_[0-9]_[0-9] /i);
var e1 = uas.match(/OS 10_[0-9] /i);
var e = uas.match(/OS 10_[0-9]_[0-9] /i);
var f1 = uas.match(/OS 11_[0-9] /i);
var f = uas.match(/OS 11_[0-9]_[0-9] /i);
if (a || b) {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS7系统");
} else if (c || c1) {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS8系统");
} else if (d || d1) {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS9系统");
} else if (e || e1) {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS10系统");
} else if (f || f1) {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS11系统");
}
}
function typeDev() { //判断设备
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/iPhone/i) == "iphone") {
typeIphone();
} else if (ua.match(/Android/i) == "android") {
if (ua.match(/MicroMessenger/i) == "micromessenger") {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "android手机微信浏览器");
} else {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "android手机");
}
} else if (ua.match(/Windows Phone/i) == "Windows Phone") {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "Windows Phone系统手机");
} else if (ua.match(/SymbianOS/i) == "SymbianOS") {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "诺基亚Symbian系统手机");
} else if (ua.match(/iPad/i) == "iPad") {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "ipad" + ua);
} else {
console.log("w:" + $(window).width() + "h:" + $(window).height() + "电脑");
}
}