-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbase64encode
More file actions
35 lines (35 loc) · 1.18 KB
/
base64encode
File metadata and controls
35 lines (35 loc) · 1.18 KB
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
function base64Encode(encodeStr){
if(!encodeStr) return ;
var BitPattern = '',result = '';
var leastSignificantBits = ''
var base64IndexTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
for (var i = 0; i < encodeStr.length; i++) {
var ASCIIChar = encodeStr.charCodeAt(i);
var binaryStr = (ASCIIChar).toString(2),newBinaryStr='';
for (var j = 0; j < 8-binaryStr.length; j++) {
newBinaryStr += '0';
}
binaryStr = newBinaryStr+binaryStr;
BitPattern += binaryStr;
}
if(BitPattern.length%24==0){
for (var i = 0; i < BitPattern.length/6; i++) {
var singleBase64CharIndex = parseInt(BitPattern.substring(6*i,6*(i+1)),2);
result += base64IndexTable[singleBase64CharIndex];
}
}else{
var blockNumber = Math.floor((24-BitPattern.length%24)/6)
var buchong = (24-BitPattern.length%24)%6;
for (var j = 0; j < buchong; j++) {
BitPattern +='0';
}
for (var i = 0; i < BitPattern.length/6; i++) {
var singleBase64CharIndex = parseInt(BitPattern.substring(6*i,6*(i+1)),2);
result += base64IndexTable[singleBase64CharIndex];
}
for (var j = 0; j < blockNumber; j++) {
result +='=';
}
}
return result ;
}