从 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 个字节)。