1) А почему INT(11)? Из 32 бит никак больше 10 десятичных знаков не получается..
2) Аффтар по ссылке несёт какую-то хуйню. Во-первых, IP-адреса для ip2long должны быть в кавычках, ибо строки. Во-вторых, знаковое целое, состоящее из всех единиц (255.255.255.255) - это ни разу не -2147483648, а вовсе даже -1. А беззнаковое - 4294967295, а не 4294967296. Оно тупо не может быть чётным, потому что заканчивается двоичной единицей. А 127.127.127.127 aka 7F7F7F7F - это 2139062143, а не 2147483648.
3) специальная хуйня действительно ведёт себя по-разному, но я так понимаю, вопрос не в ней самой, а в обратном преобразовании из целого числа в IP. И если использовать другую специальную хуйню - long2ip(), то она нормально преобразует эти числа в исходные IP-адреса.
Более того, и 32-, и 64-битовая версии нормально преобразуют и -1, и 4294967295 в 255.255.255.255.
Comments 10
Reply
Reply
2) Аффтар по ссылке несёт какую-то хуйню. Во-первых, IP-адреса для ip2long должны быть в кавычках, ибо строки. Во-вторых, знаковое целое, состоящее из всех единиц (255.255.255.255) - это ни разу не -2147483648, а вовсе даже -1. А беззнаковое - 4294967295, а не 4294967296. Оно тупо не может быть чётным, потому что заканчивается двоичной единицей.
А 127.127.127.127 aka 7F7F7F7F - это 2139062143, а не 2147483648.
3) специальная хуйня действительно ведёт себя по-разному, но я так понимаю, вопрос не в ней самой, а в обратном преобразовании из целого числа в IP. И если использовать другую специальную хуйню - long2ip(), то она нормально преобразует эти числа в исходные IP-адреса.
Более того, и 32-, и 64-битовая версии нормально преобразуют и -1, и 4294967295 в 255.255.255.255.
Reply
ну и про unsigned int забывать не надо для таких случаев.
Reply
Reply
Reply
Reply
Leave a comment