116 lines
2.3 KiB
JavaScript
116 lines
2.3 KiB
JavaScript
/* *
|
|
* @file buffer convert util
|
|
* @author junmer
|
|
* @description ArrayBuffer / Buffer / base64 convert util
|
|
*/
|
|
|
|
void 0; // only for doc
|
|
|
|
/**
|
|
* convert arrayBuffer to buffer
|
|
*
|
|
* @alias arrayBufferToBuffer
|
|
* @param {ArrayBuffer} ab arrayBuffer
|
|
* @return {buffer} buffer
|
|
*/
|
|
function ab2b(ab) {
|
|
|
|
var buffer = new Buffer(ab.byteLength);
|
|
var view = new Uint8Array(ab);
|
|
|
|
for (var i = 0, l = buffer.length; i < l; i++) {
|
|
buffer[i] = view[i];
|
|
}
|
|
|
|
return buffer;
|
|
|
|
}
|
|
|
|
/**
|
|
* convert buffer to arrayBuffer
|
|
*
|
|
* @alias bufferToArrayBuffer
|
|
* @param {buffer} buffer buffer
|
|
* @return {ArrayBuffer} arrayBuffer
|
|
*/
|
|
function b2ab(buffer) {
|
|
|
|
var ab = new ArrayBuffer(buffer.length);
|
|
var view = new Uint8Array(ab);
|
|
|
|
for (var i = 0, l = buffer.length; i < l; ++i) {
|
|
view[i] = buffer[i];
|
|
}
|
|
|
|
return ab;
|
|
|
|
}
|
|
|
|
/**
|
|
* convert base64 string to buffer
|
|
*
|
|
* @alias base64ToBuffer
|
|
* @param {string} str base64 string
|
|
* @return {Buffer} buffer
|
|
*/
|
|
function a2b(str) {
|
|
return new Buffer(str, 'base64').toString('binary');
|
|
}
|
|
|
|
/**
|
|
* convert buffer to base64 string
|
|
*
|
|
* @alias bufferToBase64
|
|
* @param {string|Buffer} str string or buffer
|
|
* @return {string} base64 string
|
|
*/
|
|
function b2a(str) {
|
|
var buffer;
|
|
|
|
if (str instanceof Buffer) {
|
|
buffer = str;
|
|
}
|
|
else {
|
|
buffer = new Buffer(str.toString(), 'binary');
|
|
}
|
|
|
|
return buffer.toString('base64');
|
|
}
|
|
|
|
/**
|
|
* convert arraybuffer to base64 string
|
|
*
|
|
* @alias bytesToBase64
|
|
* @param {ArrayBuffer|Array} ab ArrayBuffer or Array
|
|
* @return {string} base64 string
|
|
*/
|
|
function b2b(ab) {
|
|
|
|
var str = '';
|
|
|
|
if (ab instanceof ArrayBuffer) {
|
|
var length = ab.byteLength;
|
|
var view = new DataView(ab, 0, length);
|
|
for (var i = 0; i < length; i++) {
|
|
str += String.fromCharCode(view.getUint8(i, false));
|
|
}
|
|
}
|
|
else if (ab instanceof Array) {
|
|
for (var i = 0, length = ab.length; i < length; i++) {
|
|
str += String.fromCharCode(ab[i]);
|
|
}
|
|
}
|
|
|
|
return btoa(str);
|
|
|
|
}
|
|
|
|
// exports
|
|
|
|
exports.b2ab = exports.bufferToArrayBuffer = b2ab;
|
|
exports.ab2b = exports.arrayBufferToBuffer = ab2b;
|
|
exports.b2a = exports.btoa = exports.bufferToBase64 = b2a;
|
|
exports.a2b = exports.atob = exports.base64ToBuffer = a2b;
|
|
exports.b2b = exports.bytesToBase64 = b2b;
|
|
|