cari

Rumah  >  Soal Jawab  >  teks badan

php - Dalam sekeping kod yang digunakan untuk menentukan bandar mana alamat IP milik, mengapakah nilai negatif perlu dipertimbangkan semasa menulis sekeping kod?

| mendapati bahawa terdapat tempat yang saya benar-benar tidak dapat memahami : if($ipbegin < 0) $ipbegin += pow(2, 32); Masalah lain ialah: fungsi ini merujuk kepada qqwry dat (hampir ditulis sebagai kelawar pada mulanya). , hanya ada pengenalan ringkas, tetapi saya masih tidak menemuinya Jawapan yang anda mahukan.

 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
淡淡烟草味淡淡烟草味2780 hari yang lalu798

membalas semua(1)saya akan balas

  • 某草草

    某草草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

    • Digit pertama
    • int mewakili positif dan negatif. Jadi adalah perkara biasa untuk mempunyai nombor negatif

    balas
    0
  • Batalbalas