如何将整数转换为4个字节的数组?
这是我想要移植的确切代码(在C#中)
int i = 123456;
byte[] ar = BitConverter.GetBytes(i);
// ar will contain {64, 226, 1, 0}
Run Code Online (Sandbox Code Playgroud)
我如何在PHP中完成同样的事情?
我有一个非常大的PHP(5.6)数组,动态生成,我想转换为JSON.问题是数组太大而不适合内存 - 当我尝试处理它(耗尽的内存)时会出现致命的错误.所以我发现,使用发生器,内存问题将消失.
这是我到目前为止尝试过的代码(这个简化示例显然不会产生内存错误):
<?php
function arrayGenerator()// new way using generators
{
for ($i = 0; $i < 100; $i++) {
yield $i;
}
}
function getArray()// old way, generating and returning the full array
{
$array = [];
for ($i = 0; $i < 100; $i++) {
$array[] = $i;
}
return $array;
}
$object = [
'id' => 'foo',
'type' => 'blah',
'data' => getArray(),
'gen' => arrayGenerator(),
];
echo json_encode($object);
Run Code Online (Sandbox Code Playgroud)
但PHP似乎没有对生成器中的值进行JSON编码.这是我从previuos脚本得到的输出:
{
"id": "foo",
"type": "blah",
"data": …Run Code Online (Sandbox Code Playgroud) 我想说我就是这样做的
$arr = array();
for ($i = 0; $i < 10; $i++) $arr[] = $i;
Run Code Online (Sandbox Code Playgroud)
所以我将10个整数存储在一个数组中.如果整数是32b,则内存开销应为40字节.问题是,我没有告诉php它是一个整数所以它要么必须将其存储为其他东西?(例如,js喜欢制作双打)或者保留额外的数据以提醒自己它是什么?这10个数字+数组实际占用系统内存多少内存?
它很重要,因为我正在尝试评估算法的可行性,我想移植到php并且它在内存上有点沉重.