116 行
2.4 KiB
JavaScript
116 行
2.4 KiB
JavaScript
'use strict';
|
|
|
|
function utf8ToBinaryString(str) {
|
|
var escstr = encodeURIComponent(str);
|
|
// replaces any uri escape sequence, such as %0A,
|
|
// with binary escape, such as 0x0A
|
|
var binstr = escstr.replace(/%([0-9A-F]{2})/g, function(match, p1) {
|
|
return String.fromCharCode(parseInt(p1, 16));
|
|
});
|
|
|
|
return binstr;
|
|
}
|
|
|
|
function utf8ToBuffer(str) {
|
|
var binstr = utf8ToBinaryString(str);
|
|
var buf = binaryStringToBuffer(binstr);
|
|
return buf;
|
|
}
|
|
|
|
function utf8ToBase64(str) {
|
|
var binstr = utf8ToBinaryString(str);
|
|
return btoa(binstr);
|
|
}
|
|
|
|
function binaryStringToUtf8(binstr) {
|
|
var escstr = binstr.replace(/(.)/g, function(m, p) {
|
|
var code = p
|
|
.charCodeAt(0)
|
|
.toString(16)
|
|
.toUpperCase();
|
|
if (code.length < 2) {
|
|
code = '0' + code;
|
|
}
|
|
return '%' + code;
|
|
});
|
|
|
|
return decodeURIComponent(escstr);
|
|
}
|
|
|
|
function bufferToUtf8(buf) {
|
|
var binstr = bufferToBinaryString(buf);
|
|
|
|
return binaryStringToUtf8(binstr);
|
|
}
|
|
|
|
function base64ToUtf8(b64) {
|
|
var binstr = atob(b64);
|
|
|
|
return binaryStringToUtf8(binstr);
|
|
}
|
|
|
|
function bufferToBinaryString(buf) {
|
|
var binstr = Array.prototype.map
|
|
.call(buf, function(ch) {
|
|
return String.fromCharCode(ch);
|
|
})
|
|
.join('');
|
|
|
|
return binstr;
|
|
}
|
|
|
|
function bufferToBase64(arr) {
|
|
var binstr = bufferToBinaryString(arr);
|
|
return btoa(binstr);
|
|
}
|
|
|
|
function binaryStringToBuffer(binstr) {
|
|
var buf;
|
|
|
|
if ('undefined' !== typeof Uint8Array) {
|
|
buf = new Uint8Array(binstr.length);
|
|
} else {
|
|
buf = [];
|
|
}
|
|
|
|
Array.prototype.forEach.call(binstr, function(ch, i) {
|
|
buf[i] = ch.charCodeAt(0);
|
|
});
|
|
|
|
return buf;
|
|
}
|
|
|
|
function base64ToBuffer(base64) {
|
|
var binstr = atob(base64);
|
|
var buf = binaryStringToBuffer(binstr);
|
|
return buf;
|
|
}
|
|
|
|
module.exports = {
|
|
utf8ToBinaryString: utf8ToBinaryString,
|
|
utf8ToBuffer: utf8ToBuffer,
|
|
utf8ToBase64: utf8ToBase64,
|
|
binaryStringToUtf8: binaryStringToUtf8,
|
|
bufferToUtf8: bufferToUtf8,
|
|
base64ToUtf8: base64ToUtf8,
|
|
bufferToBinaryString: bufferToBinaryString,
|
|
bufferToBase64: bufferToBase64,
|
|
binaryStringToBuffer: binaryStringToBuffer,
|
|
base64ToBuffer: base64ToBuffer
|
|
};
|
|
|
|
/** WEBPACK **/
|
|
module.exports.bufferToHex = function(buf) {
|
|
return require('./hex.js').bufferToHex(buf);
|
|
};
|
|
module.exports.hexToBuffer = function(hex) {
|
|
return require('./hex.js').hexToBuffer(hex);
|
|
};
|
|
module.exports.bufferToBase32 = function(buf) {
|
|
return require('./base32.js').bufferToBase32(buf);
|
|
};
|
|
module.exports.base32ToBuffer = function(b32) {
|
|
return require('./base32.js').base32ToBuffer(b32);
|
|
};
|
|
/** END WEBPACK **/
|