-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
115 lines (92 loc) · 2.34 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/* *
* @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;