can*_*nni 5 php serialization binary-data
我有值在值之间浮动的整数:4000000000-4294967000(对于4字节无符号整数int,它小于int max)
我想将其保存到文件,然后重新读取值
$f = fopen($fileName, 'wb'); fwrite($f, pack('I', $value));
Run Code Online (Sandbox Code Playgroud)
重要的是,在文件中,值必须是精确的4字节无符号整数,因为外部设备会期望数据格式.但PHP将大值存储为float,并销毁二进制表示.
我怎么能用那种格式写那些数字?
[编辑] @FractalizeR thx这项工作我有:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但我不太明白,为什么我必须-1返回值,这个二进制文件将生成正确吗?
| 归档时间: |
|
| 查看次数: |
4073 次 |
| 最近记录: |