Home  >  Article  >  Web Front-end  >  Javascript base64 encoding implementation code_javascript skills

Javascript base64 encoding implementation code_javascript skills

WBOY
WBOYOriginal
2016-05-16 17:58:431053browse
Copy code The code is as follows:

/*
* base64编码
*/
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /";
var base64DecodeChars = new Array(
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
  52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
  -1, 0, 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, -1, -1, -1, -1, -1,
  -1, 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, -1, -1, -1, -1, -1);
function base64encode(str) {
  var out, i, len;
  var c1, c2, c3;
  len = str.length;
  i = 0;
  out = "";
  while(i < len) {
c1 = str.charCodeAt(i ) & 0xff;
if(i == len)
{
out = base64EncodeChars.charAt(c1 >> 2);
   out = base64EncodeChars.charAt((c1 & 0x3) << 4);
   out = "==";
   break;
}
c2 = str.charCodeAt(i );
if(i == len)
{
   out = base64EncodeChars.charAt(c1 >> 2);
   out = base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
   out = base64EncodeChars.charAt((c2 & 0xF) << 2);
   out = "=";
   break;
}
c3 = str.charCodeAt(i );
out = base64EncodeChars.charAt(c1 >> 2);
out = base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
out = base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
out = base64EncodeChars.charAt(c3 & 0x3F);
  }
  return out;
}
function base64decode(str) {
  var c1, c2, c3, c4;
  var i, len, out;
  len = str.length;
  i = 0;
  out = "";
  while(i < len) {
/* c1 */
do {
   c1 = base64DecodeChars[str.charCodeAt(i ) & 0xff];
} while(i < len && c1 == -1);
if(c1 == -1)
   break;
/* c2 */
do {
   c2 = base64DecodeChars[str.charCodeAt(i ) & 0xff];
} while(i < len && c2 == -1);
if(c2 == -1)
   break;
out = String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
/* c3 */
do {
   c3 = str.charCodeAt(i ) & 0xff;
   if(c3 == 61)
  return out;
   c3 = base64DecodeChars[c3];
} while(i < len && c3 == -1);
if(c3 == -1)
   break;
out = String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
/* c4 */
do {
   c4 = str.charCodeAt(i ) & 0xff;
   if(c4 == 61)
  return out;
   c4 = base64DecodeChars[c4];
} while(i < len && c4 == -1);
if(c4 == -1)
   break;
out = String.fromCharCode(((c3 & 0x03) << 6) | c4);
   }
  return out;
}
function utf16to8(str) {
  var out, i, len, c;
  out = "";
  len = str.length;
  for(i = 0; i < len; i ) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
   out = str.charAt(i);
} else if (c > 0x07FF) {
   out = String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
   out = String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
   out = String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
   out = String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
   out = String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
  }
  return out;
}
function utf8to16(str) {
  var out, i, len, c;
  var char2, char3;
  out = "";
  len = str.length;
  i = 0;
  while(i < len) {
c = str.charCodeAt(i );
switch(c >> 4)
{
  case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
   // 0xxxxxxx
   out = str.charAt(i-1);
   break;
  case 12: case 13:
   // 110x xxxx  10xx xxxx
   char2 = str.charCodeAt(i );
   out = String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
   break;
  case 14:
   // 1110 xxxx 10xx xxxx 10xx xxxx
   char2 = str.charCodeAt(i );
   char3 = str.charCodeAt(i );
   out = String.fromCharCode(((c & 0x0F) << 12) |
    ((char2 & 0x3F) << 6) |
    ((char3 & 0x3F) << 0));
   break;
}
}
  return out;
}
/*
* base64 encodingEnd
*/
var m = 'hello';
m = base64encode(m);

This is an example :
Copy code The code is as follows:




Javascript Base64 Demo



Javascript Base64 Demo



原码




Base64 encode




Base64 decode








Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn