|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
Как преобразовать IP в число для хранения в БД. Это скорее вопрос математики. Мне нужна двусторонняя функция. т.е. чтобы хранить в виде числа, а потом при желании обратно в строку. Кстати может подойдет такой способ: Преобразовать каждый байт IP адреса в символ и записать 4 символа в базу. Но MySQL будет хранить уже не 4 а 5 char символов... Наверняка это очень распространенная проблема и есть какое-нибудь простое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 09:31 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
roman2311 Наверняка это очень распространенная проблема и есть какое-нибудь простое решение. да, есть. использовать PostgreSQL. там есть тип данных ip, включая маску подсети, и набор встроенных функций для работы с ним. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 09:46 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
А я использую MySQL. Там нет встроенных IP функций. Это-же простая математика второго курса, по которой у меня всегда было 3. Может тут есть те, кто учился на 5 по математике? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 10:24 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
Возьми 4х байтовую переменную... big=b1<<32+b2<<16+b3<<8+b4; - это для упаковки айпишника b1=(big&(255<<32))>>32; b2=(big&(255<<16))>>16; и так дальше... типа так... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 11:33 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
> А я использую MySQL. Там нет встроенных IP функций. Брехня : INET_ATON() INET_NTOA() ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 11:36 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
МаксМ ты как всегда прав. В MySql есть такая функция. Сейчас попробую. Спасибо всем. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 12:04 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
сорри, там где 32 замени на 24 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 12:07 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
2 @B!N Я честно говоря не понял синтаксис. что такое << ? Мне подсказали на делфефом форуме вот такой алгоритм: B1 + B2*256 + B3*256*256 + B4*256*256*256 Как я понимаю 4 байта = 4 294 967 296 значений = 32 бита. если взять адрес 255.255.255.255 то получится: 255+(255*256)+(255*256*256)+(255*256*256*256)= 4 294 967 296 Все совпадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 12:33 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
А математика у вас, однако, страдает ;) roman2311если взять адрес 255.255.255.255 то получится: 255+(255*256)+(255*256*256)+(255*256*256*256)= 4 294 967 296если быть точным, то это будет 4 294 967 295 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 12:50 |
|
Как преобразовать IP в число для хранения в БД
|
|||
---|---|---|---|
#18+
<< - сдвиг влево >> - сдвиг вправо & - логическая операция "и" << на число N - это же самое, что умножать на 2 в степени N (только на порядок быстрее). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 13:52 |
|
|
start [/forum/topic.php?fid=23&fpage=510&tid=1479720]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 153ms |
0 / 0 |