我正在尝试将一些代码从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上扫描了图书馆,并没有找到任何可能暗示这是一个功能的内容。
答案 0 :(得分:1)
在创建缓冲区之前,只需手动替换它们:
new Buffer(
(uid+'A==')
.replace(/\+/g, '[')
.replace(/\//g, ']')
, 'base64').toString('ascii')