|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
IP-адрес и промежуток
Здрасте! Есть промежуток 46.29.8.0 - 46.29.15.255. Как узнать входит ли данный IP-адрес 46.29.9.245 в промежуток, который указан выше??? Заранее спасибо.
|
#2
|
||||
|
||||
Переводишь айпи адрес в целое число например 255.254.253.1=1+253*10+254*100+255*1000 . Так же переводишь и второй айпи. Переводишь тот айпи который надо узнать и проверяешь лежит ли он между двумя заданамми
Не твори зла, и жизнь повернется к тебе передом |
#3
|
|||
|
|||
Неработает твой алгоритм, получается что айпи 46.29.16.200 лежит в диапозоне указанным выше, и откуда ты взял этот метод?
|
#4
|
|||
|
|||
Правильно не работает.
На самом деле тебе просто достаточно перевести это дело в Long. Тогда сработает. Ну или как-то так: p1*256^3 + p2*256^2 + p3^256 + p4, где 46.29.16.200: p1 = 46, p2 = 29, p3 = 16, p4 = 200. Если у тебя уже есть 4 байта, то код будет такой: Код:
function IP2Long(b1,b2,b3,b4 : Byte) : Integer; begin Result := b1; Result := (Result Shl 8) + b2; Result := (Result Shl 8) + b3; Result := (Result Shl 8) + b4; end; |
#5
|
||||
|
||||
lmikle второй раз забываю про ограничения integer
Не твори зла, и жизнь повернется к тебе передом |
#6
|
|||
|
|||
Да у тебя в другом проблема. Тебе надо сдвигать каждый байт IP адреса на 3 позиции, а ты сдвигаешь на 1 (в десятичном исчислении). Вот оно неправильно и работает. Хотя идея-то правильная.
|