You might want to take a look at the BC Math functions, which can perform operations on arbitrary length numbers. On Tue, Mar 15, 2011 at 12:31 PM, Ford, Mike <M.Ford@xxxxxxxxxxxxxx> wrote: >> -----Original Message----- >> From: Andy McKenzie [mailto:amckenzie4@xxxxxxxxx] >> Sent: 15 March 2011 15:51 >> >> As it turns out, the most important lesson here is: "Don't trust >> what >> anyone tells you." The old server is 64-bit. The new server is >> 32-bit. Once I stopped to check that myself, it all became clear. >> For the archives, here's what happened. >> >> Everything worked fine until I ran bindec() on the binary netmask; >> at >> that point it returned a float rather than an int, as it it used to. >> Therefore, when I ran ip2long on the result, it choked, and returned >> bool(false). Which isn't really useful when you're trying to >> produce >> a human-readable netmask, when you get right down to it. >> >> I still don't have a solution that will work on a 32-bit server, but >> now that I know what's going on, I should be able to either find >> something that will work, or get things moved to a 64-bit machine. > > You may have to use a replacement for bindec which employs bit-shifting > to get the result you want; something like: > > function my_bindec($binstr) > { > $binlen = strlen($binstr); > $decval = 0; > for ($i=0; $i<$binlen; ++$i): > $decval = ($decval<<1) | ($binstr[$i]?1:0); > endfor; > > return $decval; > } > > Note: off the top of my head and completely UNTESTED! > > Also, the constant 4294967295 quoted in your original message will > become a float value on a 32-bit system. It's actually a representation > of 32-bit -1, so either write it like that or use something like > ip2long('255.255.255.255') (or > my_bindec('11111111111111111111111111111111')!!!). > > > Cheers! > > Mike > > -- > Mike Ford, > Electronic Information Developer, Libraries and Learning Innovation, > Leeds Metropolitan University, C507 City Campus, > Woodhouse Lane, LEEDS, LS1 3HE, United Kingdom > Email: m.ford@xxxxxxxxxxxxxx > Tel: +44 113 812 4730 > > > > > To view the terms under which this email is distributed, please go to http://disclaimer.leedsmet.ac.uk/email.htm > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php