![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
кодировка ip адреса
Sour © (2005-07-19 06:27:00)Пришлось работать с уже созданной БД для накопления статистики по трафику. Во всех таблицах ip адрес записывается в поле int(10).
В связи с этим 2 вопроса:
1. Как получить стандартное представление адреса (напр, 192.168.1.1) имеея его в значении int(10) и наоборот?
2. Как можно проверить принадлежность ip адреса некоторому диапазону, если он задан как int(10)?
Anatoly Podgoretsky (2005-07-19 12:17:00) [1]Тому вечная память.
DiamondShark (2005-07-19 12:12:00) [2]А кто не может?
Anatoly Podgoretsky (2005-07-19 11:09:00) [3]Спасайся кто может.
wal (2005-07-19 10:47:00) [4]oktet:array[1..4] of int32
???
tesseract (2005-07-19 10:44:00) [5]Для Справки IP-адрес это 32-битное число
To>> Lamer@fools.ua
да промахнулся работать будет не всегда
лучше oktet:array[1..4] of int32; и писать октеты сюда.
wal (2005-07-19 10:40:00) [6]
> раз в н-дцать быстрее
Я только принцип показал, а как уж автор считать будет - дело его.
Кстати, еoе быстрее просто положить байты в память в нужной последовательности, а потом прочитать их как DWORD.
Lamer@fools.ua (2005-07-19 10:36:00) [7]>> Sour (19.07.05 06:27)
Телепаты в бессрочном отпуске.
>> tesseract (19.07.05 10:35) [4]
Уверены?
tesseract (2005-07-19 10:35:00) [8]>>1+1*256+168*265*265+192*256*256*256 = 3232235777
1+(1 shl 8)+(168 shl 16)+(192 shl 24)? - раз в н-дцать быстрее
wal (2005-07-19 09:59:00) [9]Ошибочка вышла ... 168*256*256...
wal (2005-07-19 09:55:00) [10]
> напр, 192.168.1.1
1+ 1*256+ 168*265*265+ 192*256*256*256 = 3232235777
Причем тут int(10)?
С уважением.
Strech (2005-07-19 07:32:00) [11]ну угадать, как разработчик БД зашифровал IP в int(10) сложно. Можно предположить, что он представил IP в виде строки, удалил все точки и перевел полученный результат в int. Соответственно ответ на первый вопрос - это обратный алгоритм. Ну а второй ответ вытекает из первого