上下文:我正在读取/写入数据,出于存储原因,这些数据以 24 位整数形式出现(有符号或无符号并不重要,因为它们实际上是 8 个八进制值)。pack
我需要用和存储/读取大量这些整数unpack
。该应用程序对空间要求很高,因此不希望使用 32 位整数。
但是,pack 似乎没有 24 位整数的选项。如何处理这个问题?我目前使用自定义函数
function pack24bit($n) {
$b3 = $n%256;
$b2 = $n/256;
$b1 = $b2/256;
$b2 = $b2%256;
return pack('CCC',$b1,$b2,$b3);
}
和
function unpack24bit($packed) {
$arr = unpack('C3b',$packed);
return 256*(256*$arr['b1']+$arr['b2'])+$arr['b3'];
}
但也许有更直接的方法?