| 
 | 
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Со старшим байтом overflow выбрасывает. За пределы Long выходит. В данном случае это не принципиально, так как таких больших диапазонов не будет. В любом случае спасибо Вам большое. Постараюсь на практике разобраться и, может, подправить. Еще раз спасибо. Если получится, напишу. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 08.01.2014, 21:25 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IvanCЗа пределы Long выходитСамо собой. Попробуй использовать Currency - у него целая часть принимает бОльшие значения, при этом - это точный тип. Правда, я не знаю, как с ней будут работать функции двоичных преобразований. IvanCЕсли получится, напишу.если не получится - пиши тем более ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 08.01.2014, 21:28 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Shocker.Pro, Пока что из всех диапазонов, которые проверил, все совпадает с интернет-калькулятором! Полет нормальный :) Спасибо! P.S.Действительно, сначала нужно разбираться, а потом слизывать. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 08.01.2014, 21:30 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Да не должно работать! По крайней мере из-за (n-1) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 08.01.2014, 21:31 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А если уже все исправил - так выложи исправленную версию ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 08.01.2014, 21:31 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Да, с другим типом нужно будет и функции преобразования переделывать кардинально, поэтому проще так сделать. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 08.01.2014, 21:32 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Спасибо Shocker.Pro за помощь, без него вряд ли догадался бы. Ну и еще вопрос назрел: создал ACCESS базу данных, в которой планирую хранить IP адреса. Решил их записывать в целочисленном формате. Но проблема в том, что в дальнейшем нужно будет производить с ними логическое умножение. Возможно ли это производить прямо в SQL-запросе? Из того, что я прочитал и попробовал, почему-то понял, что с ACCESS такие фокусы не проходят или я ошибаюсь? И в каком формате хранить эти данные? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 00:22 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Что такое логическое умножение? Логическое И? Вроде бы без проблем - Поле1 & Поле2 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 00:26 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  имхо, ТС имеет в виду битовые операции в Акцессе (в Jet) они есть : band, bor, bxor но их можно использовать : - или программно, через АДО Код: vbnet 1. 2. - или, если для БД включен синтаксис для ANSI 92, то и через интерфейс Акцесса или, если клиентская часть тоже будет в Аксцессе, можно написать пользовательские функции на ВБА и использовать их в запросах ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 01:19 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  В таблице находятся следующие записи: Код Net Mask Provider City 6 1579791360 4294966272 UfaNet Orenburg SQL запрос: SELECT IP.Provider, IP.City FROM IP WHERE IP.Net = (IP.Mask & '1579791641'); Но дает пустые поля. Может что не так сделал? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 11:32 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  во-первых почему число в кавычках? во вторых попробуйте And или BAnd для наложения маски ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 12:21 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Кавычки убрал, попробовал с AND -  результат тот же - пустые поля, а на band ругается, что пропущен оператор. А из-за типа поля может быть такая проблема? я поставил числовой тип, действительное число. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 12:34 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IvanCдействительное число.да, конечно, числа с плавающей запятой не являются точными, нужно использовать типы с фиксированной запятой ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 12:51 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IvanCВ таблице находятся следующие записи: Код Net Mask Provider City615797913604294966272UfaNetOrenburg SQL запрос: SELECT IP.Provider, IP.City FROM IP WHERE IP.Net = (IP.Mask & '1579791641'); Но дает пустые поля. Может что не так сделал? а что вот это за "приколы" (выделил), которые в 4-е байта и не влазят-то ? ты как 4-х байтные тетрады ИП и маски переводил в целое число ? вот это вот твоё - "Решил их записывать в целочисленном формате" - как сделал ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 13:01 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  "длинное целое", как написано в access имеет предел 2 147 483 647, хоть подсеть и влезает в этот предел, но маска не укладывается. Перевод туда и обратно осуществляется функцией, там тип Variant, поэтому проблем не встречаю. Сейчас вставил в таблицу вместо маски и сети "1", также вместо проверяемого адреса поставил "1", 1 AND 1 = 1, но запрос все так же не отрабатывает. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 18:57 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IvanC1 AND 1 = 1,а так (1 AND 1) = 1 приоритет операции сравнения выше, чем битовой (кажется) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 22:34 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Оказывается, на самом деле в запросе Access эти фокусы не прокатывают, подключил базу в среде VBA через Microsoft.ACE.OLEDB.12.0, где и сработал BAND,  но снова проблема. Не работает почему-то BAND с этими числами. Переполнение возвращает. Неужели придется разбивать IP адреса на части? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 23:03 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  авторНеужели придется разбивать IP адреса на части?  ТС, "открой мне глаза", скажи какой ИП и какую маску ты "представил" в виде этих целых чисел - 1579791360 и 4294966272 покажи эти ИП и маску - тетрадами , потом вместе над тобой посмеёмся ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 23:09 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  94.41.180.0 255.255.252.0 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 23:11 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IvanC94.41.180.0 255.255.252.0 с первым - понятно а для 255.255.252.0 - "левое" значение Код: vbnet 1. 2. 3. 4. 5. соответственно их побитовое произведение Код: vbnet 1. 2. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 23:23 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  а почему маска отрицательная получилась? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 23:43 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  IvanCа почему маска отрицательная получилась? потому что эта твоя маска не количество хз чего, а всего лишь то, как храниться число с типом Long , которое в 16-ричной форме записываеться как FFFFFC00 а у Long - первый бит - определяет знак числа вот тебе для размышлений Код: vbnet 1. 2. 3. 4. 5. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.01.2014, 23:59 | 
  
  
  
   | 
||
| 
 
Расчет подсетей из диапазона IP-адресов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  кстате, если "пугают" отрицательные дес.числа, то можно просто всё хранить в 16-ричных, прийдёться, правда всё время "морочиться" с преобразованиями, но сами значения, конечно по-наглядней будут ... Код: vbnet 1. 2. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.01.2014, 00:05 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=60&msg=38523228&tid=2156583]:  | 
    0ms | 
get settings:  | 
    11ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    62ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    56ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 14ms | 
| total: | 179ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...