Skip to main content
 首页 » 编程设计

javascript之在 Python 中将 base64 数据解码为数组

2025年05月04日27EasonJim

我正在使用这个方便的 Javascript 函数来解码 base64 字符串并返回一个数组。

这是字符串:

base64_decode_array('6gAAAOsAAADsAAAACAEAAAkBAAAKAQAAJgEAACcBAAAoAQAA') 

这是返回的内容:

234,0,0,0,235,0,0,0,236,0,0,0,8,1,0,0,9,1,0,0,10,1,0,0,38,1,0,0,39,1,0,0,40,1,0,0 

问题是我不太了解javascript函数:

var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(""); 
var base64inv = {};  
for (var i = 0; i < base64chars.length; i++) {  
  base64inv[base64chars[i]] = i;  
} 
function base64_decode_array (s) 
{ 
  // remove/ignore any characters not in the base64 characters list 
  //  or the pad character -- particularly newlines 
  s = s.replace(new RegExp('[^'+base64chars.join("")+'=]', 'g'), ""); 
 
  // replace any incoming padding with a zero pad (the 'A' character is zero) 
  var p = (s.charAt(s.length-1) == '=' ?  
          (s.charAt(s.length-2) == '=' ? 'AA' : 'A') : "");  
 
  var r = []; 
 
  s = s.substr(0, s.length - p.length) + p; 
 
  // increment over the length of this encrypted string, four characters at a time 
  for (var c = 0; c < s.length; c += 4) { 
 
    // each of these four characters represents a 6-bit index in the base64 characters list 
    //  which, when concatenated, will give the 24-bit number for the original 3 characters 
    var n = (base64inv[s.charAt(c)] << 18) + (base64inv[s.charAt(c+1)] << 12) + 
            (base64inv[s.charAt(c+2)] << 6) + base64inv[s.charAt(c+3)]; 
 
 
    // split the 24-bit number into the original three 8-bit (ASCII) characters 
    r.push((n >>> 16) & 255); 
    r.push((n >>> 8) & 255); 
    r.push(n & 255); 
 
 
  } 
   // remove any zero pad that was added to make this a multiple of 24 bits 
  return r; 
} 

那些“<<<”和“>>>”字符的功能是什么? 或者 Python 是否有这样的函数?

请您参考如下方法:

谁在乎呢。 Python 有更简单的方法来做同样的事情。

[ord(c) for c in '6gAAAOsAAADsAAAACAEAAAkBAAAKAQAAJgEAACcBAAAoAQAA'.decode('base64')]