コンテキスト:私はデータを読み書きしていますが、格納の理由から24ビットの整数(符号付きまたは符号なしは実際には8進数の値なので問題ありません)です。私はpack
とunpack
でこれらの整数の多くを保存/読み込む必要があります。このアプリケーションはスペース上重要なので、32ビット整数を使用することは望ましくありません。pack PHPの24ビット整数のリスト
しかし、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'];
}
カスタム関数を使用しますが、おそらく、より直接的な方法があるのですか?
24ビットを与えるフォーマット文字列 "CS"を使用できますか? – Graeme
phpのintサイズがプラットフォームに依存することに注意してください。 32ビットにすることができます。彼らはまた、64ビットになる可能性があります –
@ nl-xその発言が私の質問にどう関係しているか説明できますか?私は24ビットが私が働いているときにこれが重要だとは思わない。 – user1111929