tengo números enteros que flota entre los valores: 4000000000 hasta 4294967000 (que es menos de int máximo para un entero sin signo de 4 bytes)gran número entero de 4 bytes como sin firmar, binario
y quiero guardarla en un archivo , y luego el valor
$f = fopen($fileName, 'wb'); fwrite($f, pack('I', $value));
es importante que en el expediente, el valor debe ser exactamente 4 bytes entero sin signo, ya que los dispositivos externos esperan que ese formato de los datos re-leer. Pero PHP almacena esos grandes valores como float y destruye la representación binaria.
¿Cómo puedo escribir esos números en un archivo en ese formato?
[EDIT] THX @FractalizeR esto funciona tengo:
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;
}
}
pero yo no entiendo muy bien, ¿por qué tengo a -1 en el valor de regresar, y es este binario será producido correcta ?
Hey, thx :) ¿Se puede comprobar si mi aplicación está funcionando correctamente? – canni