我有一些整数,它们的浮点值介于4000000000-4294967000之间(这比4字节无符号整数的最大值要小)
我想将其保存到文件中,并重新读取该值。
$f = fopen($fileName, 'wb'); fwrite($f, pack('I', $value));
在文件中,值必须是精确的4字节无符号整数,因为外部设备将期望数据格式为此。但是PHP将大值存储为浮点数,并破坏了二进制表示。
我如何以该格式将数字写入文件中?
[编辑] @FractalizeR 谢谢,这个方法可行,我现在有:
protected static function handleUint($direction, $value)
{
if($direction == 'encode')
{
$first2bytes = intval($value / (256 * 256));
$second2bytes = intval($value - $first2bytes);
return pack('n2', $first2bytes, $second2bytes);
}
else
{
$arr = unpack('n2ints', $value);
$value = $arr['ints1'] * (256 * 256) + intval($arr['ints2']) - 1;
return $value;
}
}
但我不太明白,为什么我要在返回值上减1,这个二进制文件是否会被正确生成?