Mangus875

Base64 Javascript

Oct 19th, 2023 (edited)
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function textToBinary(str='', sep=' ') {
  2.     let result = '';
  3.     result = str.split('').map(char => {
  4.         let bite = char.charCodeAt(0).toString(2);
  5.         while (bite.length < 8) {
  6.             bite = '0'+bite;
  7.         }
  8.         return bite
  9.     }).join(sep);
  10.    
  11.     return result;
  12. }
  13.  
  14. function groupSplit(str, n=1) {
  15.     return str.match(new RegExp('.{1,'+n+'}', 'g'));
  16. }
  17.  
  18. function toBase64(str, addEq=true) {
  19.     const base64charset = [
  20.         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
  21.         'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
  22.         'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
  23.         'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
  24.         'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
  25.         'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
  26.         'w', 'x', 'y', 'z', '0', '1', '2', '3',
  27.         '4', '5', '6', '7', '8', '9', '+', '/'
  28.     ]
  29.    
  30.     let binary = textToBinary(str, '');
  31.     let chunks = groupSplit(binary, 6);
  32.     let vals = [];
  33.     let result = '';
  34.     let eq = 0;
  35.    
  36.     chunks.forEach(function(val, index) {
  37.         while (val.length < 6) {
  38.             val += '0';
  39.             eq++;
  40.         }
  41.         vals.push((parseInt(val, 2)));
  42.     });
  43.    
  44.     vals.forEach(function(val, index) {
  45.         result += base64charset[val];
  46.     });
  47.    
  48.     if (addEq) {
  49.         for (let i = 0; i < eq/2; i++) {
  50.             result += '=';
  51.         }
  52.     }
  53.     return result;
  54. }
  55.  
  56. console.log(toBase64("Hello, World!")); // SGVsbG8sIFdvcmxkIQ==
Add Comment
Please, Sign In to add comment