我有一個整數,其值之間浮動:4000000000-4294967000(小於INT最多爲4字節無符號整數)寫大4字節整數爲一個無符號二進制
,我想將它保存到文件,然後再讀取值
$f = fopen($fileName, 'wb'); fwrite($f, pack('I', $value));
,在文件中,值必須是精確的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;
}
}
但我不太明白,爲什麼我要-1返回值,並且是這個二進制文件將產生正確的?
嘿,thx :)你可以檢查我的執行工作是否正確嗎? – canni 2010-08-31 10:14:48