具有
$t = time();
如何最好地将$ t的值转换为签名的(16位)整数对,例如
21232,-16083
编辑:当前代码并不漂亮,但有效:
$t = time();
$h = $t >> 16;
$l = $t - ($h << 16);
if ($h > 32767) $h=$h - 65536;
if ($l > 32767) $l=$l - 65536;
echo $h . ',' . $l;
答案 0 :(得分:1)
$thigh = $t >> 16;
$tlow = $t & 0xffff;
if($thigh >= (1<<15)) $thigh -= (1<<16);
if($tlow >= (1<<15)) $low -= (1<<16);
(编辑:嗯,这不是更漂亮,但它是如何工作的)
答案 1 :(得分:1)
以下是使用pack and unpack functions的方式:
$pair = unpack('slo/shi', pack('l', time())));
// $pair = array ('lo' => -4680, 'hi' => 21232)
不幸的是,这取决于你是在大端还是小端CPU上。由于PHP通常在兼容英特尔的硬件上运行,因此这对您来说可能不是问题。