在node.js中的base64解码/编码中指定“备用字符”

时间:2014-03-06 01:04:39

标签: python node.js base64

我正在尝试将一些代码从python移植到节点。代码如下:

//returns the UID contained in the var uid decoded to an int:
uid = 'ABCDE'
struct.unpack(">I", base64.b64decode(uid + 'A==', "[]"))[0] / 4

//encodes the UID int in uidint into the B64 UID:
uidint = 270532
base64.b64encode(struct.pack(">I", uidint * 4), "[]")[0:5]

我已经找到了一个替换python结构类提供的打包/解包功能的库。

但是,base64的python&n; implementation支持允许替换字符。不幸的是,节点没有。

这是我正在进行的工作端口:

uid = 'ABCDE';
decoded = new Buffer(uid+'A==', 'base64').toString('ascii');
console.log(decoded);
test = jspack.Unpack(">I",decoded)[0] / 4;
console.log(test);

目前第一个console.log返回奇怪的字符。第二个回归NaN。这是有道理的,为什么它会这样做。

我想知道是否有人知道如何复制python这种模式的实现。我已经在npm上扫描了图书馆,并没有找到任何可能暗示这是一个功能的内容。

1 个答案:

答案 0 :(得分:1)

在创建缓冲区之前,只需手动替换它们:

new Buffer(
  (uid+'A==')
    .replace(/\+/g, '[')
    .replace(/\//g, ']')
, 'base64').toString('ascii')