Rumah > Soal Jawab > teks badan
fungsi awam qqwry($ip='222.222.222.222'){
//$fd->sumber(24, strim)
if(!$fd = @fopen("./Public/qqwry.dat", 'rb')) {
kembalikan 'Fail data IP tidak sah';
}
$ip = meletup('.', $ip);
//$ipNum=2079656996
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
//Dapatkan kedudukan mula dan akhir indeks alamat IP Pada masa ini, output kedua-dua pembolehubah adalah bercelaru (sepatutnya binari).
if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ){
kembali;
}
// Fungsi unpack() membongkar data daripada rentetan binari, L--integer panjang tidak ditandatangani
// implode — Sertai elemen tatasusunan dengan (ke) rentetan
@$ipbegin = meletup('', unpack('L', $DataBegin));// 6153398
//pow(x,y)--Fungsi pow() mengembalikan x dinaikkan kepada kuasa ke-y.
if($ipbegin < 0) $ipbegin += pow(2, 32); // Dalam keadaan apakah $ipbegin<0 ???
// implode — Sertai elemen tatasusunan dengan (ke) rentetan
@$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = $ip2num = $ip1num = 0;
$ipAddr1 = $ipAddr2 = '';
$EndNum = $ipAllNum;
while($ip1num > $ipNum || $ip2num < $ipNum) {
//Berikut ialah bahagian besar dikotomi, jadi saya tidak akan menyalinnya
某草草2017-05-16 13:13:08
IP dinyatakan dalam binari sebagai 32bit, jadi int juga 32bit Gunakan nombor untuk menyimpan IP, yang mempunyai kecekapan carian dan ruang penyimpanan yang lebih baik
int mewakili positif dan negatif. Jadi adalah perkara biasa untuk mempunyai nombor negatif