gpt4 book ai didi

php - 将 4 字节大整数写为无符号二进制

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:57 24 4
gpt4 key购买 nike

我有在值之间 float 的整数:4000000000-4294967000(小于 4 字节无符号整数的 int 最大值)

我想把它保存到文件中,然后重新读取值

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

重要的是,在文件中,值必须是精确的 4 字节 unsigned int,因为外部设备需要这种格式的数据。但是 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,这个二进制文件是否会正确生成?

最佳答案

好吧,将 4 字节数字拆分为 2 个 2 字节数字(整数除以 256*256 得到第一个单词,然后从原始值中减去该值得到第二个单词)并分成两包写入。

关于php - 将 4 字节大整数写为无符号二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3607757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com