Imzasız, ikili olarak büyük 4 bayt tamsayı yazın

0 Cevap php

(4 bayt işaretsiz int int max daha az olduğu) 4000000000-4294967000: I değerleri arasında yüzen tamsayılarımız

ve i yeniden-okuma değeri daha sonra bunu dosyaya kaydetmek istiyorum, ve

$f = fopen($fileName, 'wb'); fwrite($f, pack('I', $value));

Bu harici cihazlar veri bu biçimi bekliyoruz çünkü dosyasında, değeri, tam 4 bayt işaretsiz int olmalıdır önemlidir. Ancak PHP saklar o büyük şamandıra gibi değerler ve ikili gösterimi yok.

Nasıl sayılar bu formatta dosya olduğunu yazabilirim?

[EDIT] @FractalizeR thx this works i have:

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;
    }
}

Ama ben dönen değer -1 zorunda yüzden oldukça, anlamıyorum, ve bu ikili doğru üretilecek mi?

0 Cevap