我尝试从'/ dev / urandom'中读取的原始数据创建整数。但我不知道如何转换为整数。
<?php
//////////////////////////////////////////////////////////////////////////////
function base62_encode($val, $base=62, $chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {
if(!isset($base))
$base = strlen($chars);
$str = '';
do {
$m = bcmod($val, $base);
$str = $chars[$m] . $str;
$val = bcdiv(bcsub($val, $m), $base);
} while(bccomp($val,0)>0);
return $str;
}
//////////////////////////////////////////////////////////////////////////////
$file = fopen('/dev/urandom', 'rb');
if ( !$file ) {
throw new Exception('Error!');
} else {
$binary = fread($file, 4); // 4 bytes == 32 bits
fclose($file);
$dec = (int)$binary;
$base62 = base62_encode($dec);
fprintf(STDOUT, "dec:%d, %s\n", $dec, $base62);
}
//////////////////////////////////////////////////////////////////////////////
?>
作为输出我得到:“dec:0,0”
您可以测试代码here。
答案 0 :(得分:2)
$dec = unpack('L', $binary)[1];