मैं पूर्णांकों जो मूल्यों के बीच तैरता: 4000000000-4294967000एक अहस्ताक्षरित के रूप में बड़े 4 बाइट पूर्णांक लिखें, द्विआधारी
(जो एक 4 बाइट अहस्ताक्षरित पूर्णांक के लिए पूर्णांक अधिकतम से कम है) और मैं फाइल करने के लिए इसे सहेजना चाहते , और उसके बाद फिर से पढ़ने के मूल्य
$f = fopen($fileName, 'wb'); fwrite($f, pack('I', $value));
यह महत्वपूर्ण है कि फाइल में, मूल्य, सटीक 4 बाइट अहस्ताक्षरित पूर्णांक होना चाहिए, क्योंकि बाहरी उपकरणों डेटा के उस प्रारूप उम्मीद होगी। लेकिन PHP उस बड़े मूल्यों को फ्लोट के रूप में संग्रहीत करता है, और बाइनरी प्रतिनिधित्व को नष्ट कर देता है।
मैं उस प्रारूप में फ़ाइल करने के लिए उन नंबरों को कैसे लिख सकता हूं?
[संपादित करें] @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