我详细介绍了该项目: 我正在为mega.co.nz使用PHP SDK,但由于加密问题(prepare_key太慢,偶尔会导致我称之为“误报”的问题)我看起来是登录的替代方案,并且经过多次测试没有经验的替代品(python,c ++,c#)后,我在nodejs中发现了一个sdk,无法适应我的需求。
SDK是https://github.com/tonistiigi/mega/,问题是下一个:
Node.JS返回一个16字节的数组,而PHP返回4个字(每个4字节)
如何将数组转换为将其返回给nodejs?
抱歉我的英文!!
答案 0 :(得分:1)
要从node.js转换为PHP格式:
buffer = require('buffer');
arr = [8,24,40,56,72,88,104,120,136,152,168,184,200,216,232,248];
console.log(arr.length);
buff = new Buffer(arr);
console.log(buff);
phpstreq = [];
phpinteq = [];
length = 4;
count = 0;
while (count < 16)
{
phpinteq.push(buff.readUInt32BE(count,true))
phpstreq.push(buff.slice(count,count+length));
count += length;
}
console.log(phpinteq);
console.log(phpstreq);
上面的输出
[ 135800888, 1213753464, 2291706040, 3369658616 ]
[ <Buffer 08 18 28 38>,
<Buffer 48 58 68 78>,
<Buffer 88 98 a8 b8>,
<Buffer c8 d8 e8 f8> ]
要从PHP转换为node.js格式:
<?php
$arr = [ 135800888, 1213753464, 2291706040, 3369658616 ];
$bytearray =[];
foreach ($arr as $byte4)
{
$eq = unpack("C*", pack("N", $byte4));
$bytearray = array_merge($bytearray,$eq);
}
print_r($bytearray);
?>
输出
Array
(
[0] => 8
[1] => 24
[2] => 40
[3] => 56
[4] => 72
[5] => 88
[6] => 104
[7] => 120
[8] => 136
[9] => 152
[10] => 168
[11] => 184
[12] => 200
[13] => 216
[14] => 232
[15] => 248
)
我上面使用了大端格式。由于你的输出模糊了,你必须自己检查一下。还要注意验证node.js中使用的输入数组。在node.js中,数组中的整数x
必须是0 < x < 256
(记住每个数字= 1个字节)。