Форум программистов, компьютерный форум CyberForum.ru

Расчитать маскку сети исходя из диапозона - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Сохранение http://www.cyberforum.ru/objective-c/thread969235.html
как сделать сохранение...-что бы после остановки симмулятора-работа не сбрасывалась, а сохранялась и при новом запуске просто продолжала работу...?
Objective-C Совмещение С++ файлов и файлов Objective-C мне нужно реализовать этот алгоритм http://recog.ru/blog/opencv/76.html в xCode. Сегментация с помощью opencv.framework. Я никогда не совмещал ранее код С++ и Objective-C. Для начала я скачал вот этот пример https://github.com/foundry/OpenCVSquaresSL . Разобрался и по подобию решил реализовать k-means алгоритм. Добавил opencv.framework (из примера), подключил компиляцию С++ кода в файле... http://www.cyberforum.ru/objective-c/thread968149.html
Objective-C Локализация sqlite файла
Здравствуйте, делаю локализацию своего приложения, со строками все ок, а вот с базой данной проблема, справа в файл менеджере на файле базы данных нажала локализовать, в результате в каждой папке с языком появилась своя база. Очистку приложения перед компиляцией сделала, но приложение все равно отображает только на одном языке, на котором я с самого начала все делала. Подскажите, пожалуйста, как...
Objective-C Парсинг данных получаемых от сервиса с авторизацией
проблема в делегировании. Задача:послать запрос сервису,с логином и паролем,получить строку-токен (SessionId),которую в дальнейшем приходиться передавать в каждом запросе в качестве параметра(запросы XML,SOAP),в ответ на следующие запросы приходит ХМL со списком,надо его распарсить. Токен я получил,передал,в общем получаю ХМЛ в Data и пытаюсь скормить его парсеру,парсер тупо не...
Objective-C еще кое-что http://www.cyberforum.ru/objective-c/thread966474.html
как вывести текст с UITextField в UILabel но уже с массивом: "текст с UITextField" "массив"
Objective-C Как писать такую простую модель на Objective C? задача простая: есть типа супермаркет, он же Main... и есть классы касса, покупатель, продавщица, корзина и товар. Корзина из себя представляет массив, в котором содержются выбранные продукты... Нужно делать нечто такое: в мейне обявить, что в супермаркет зашел полупатель, но таким образом, что бы сообщение появилось не в самом просто мейне, а из метода, полученного из класса покупатель. Потом... подробнее

Показать сообщение отдельно
vikewoods
0 / 0 / 0
Регистрация: 05.10.2013
Сообщений: 7
07.10.2013, 14:20  [ТС]     Расчитать маскку сети исходя из диапозона
Прошу извинить. Формулы или алгоритма я так и не нашел за 3 дня обрыл первых 20 страниц яндекса и гугла.
Вообщем задал вопрос админам и понял что рассчитывать надо исходя из октетов, т.е. пример

1.0.1.0 - 1.0.3.255
00000001.00000000.00000001.00000000 - 00000001.00000000.00000011.11111111

Видим что первые 2 октета одинаковы и неизменны а также первый 6 бит третьего тоже неизменны. Как я понял мы просто заполняем 1 то что неизменно т.е. маска будет
11111111.11111111.11111100.00000000
255.255.252.0

Ну как бы переделал вот так:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//
//  IPCalculator.m
//  IP Network Calculator
//
//  Created by Vik Ewoods on 10/2/13.
//  Copyright (c) 2013 Vik Ewoods. All rights reserved.
//
 
#import "IPCalculator.h"
 
@implementation IPCalculator
 
// Classes Table
// Class    First Bit   Min IP      Max IP            Hosts
// A        0           1.0.0.0     126.0.0.1         2^24
// B        10          128.0.0.0   191.255.0.0       2^16
// C        110         192.0.1.0   223.255.255.0     2^8
// D        1110        224.0.0.0   239.255.255.255   Multicast
// E        11110       240.0.0.0   247.255.255.255   Reserved
 
// NOTES: CIDR -> Conver bits from 00000001 to 10000000
// NOTES: HOST -> (2^32-CIDR) - 2;
 
-(long)calculateNetworkWithFullStartIP:(NSString *)full_start_ip WithFullEndIP:(NSString *)full_end_ip{
  // NOTES: Split start IP
  NSArray *splitLinesStartIP = [full_start_ip componentsSeparatedByString: @"."];
  int splitLinesStartIPA = [splitLinesStartIP[0] intValue];
  int splitLinesStartIPB = [splitLinesStartIP[1] intValue];
  int splitLinesStartIPC = [splitLinesStartIP[2] intValue];
  int splitLinesStartIPD = [splitLinesStartIP[3] intValue];
  
  // NOTES: Split end IP
  NSArray *splitLinesEndIP = [full_end_ip componentsSeparatedByString: @"."];
  int splitLinesEndIPA = [splitLinesEndIP[0] intValue];
  int splitLinesEndIPB = [splitLinesEndIP[1] intValue];
  int splitLinesEndIPC = [splitLinesEndIP[2] intValue];
  int splitLinesEndIPD = [splitLinesEndIP[3] intValue];
  
  // NOTES: Convert to decimal
  int startDecimalIp = splitLinesStartIPD + (splitLinesStartIPC * 256) + (splitLinesStartIPB * 256 * 256) + (splitLinesStartIPA * 256 * 256 * 256);
  int endDecimalIp = splitLinesEndIPD + (splitLinesEndIPC * 256) + (splitLinesEndIPB * 256 * 256) + (splitLinesEndIPA * 256 * 256 * 256);
    //NSLog(@"Start decimal: %i", startDecimalIp);
    //NSLog(@"End decimal: %i", endDecimalIp);
  
  // NOTES: Log bins
  NSString *startDecimalIpBin = [self convertToBinWithDecimal:startDecimalIp];
  NSString *endDecimalIpBin = [self convertToBinWithDecimal:endDecimalIp];
  
  // NOTES: Split on octets
  NSArray *splitStartDecimalOnOctet = [startDecimalIpBin componentsSeparatedByString: @" "];
  NSString *splitStartDecimalOnOctet1 = splitStartDecimalOnOctet[0];
  NSString *splitStartDecimalOnOctet2 = splitStartDecimalOnOctet[1];
  NSString *splitStartDecimalOnOctet3 = splitStartDecimalOnOctet[2];
  NSString *splitStartDecimalOnOctet4 = splitStartDecimalOnOctet[3];
  
  NSArray *splitEndDecimalOnOctet = [endDecimalIpBin componentsSeparatedByString: @" "];
  NSString *splitEndDecimalOnOctet1 = splitEndDecimalOnOctet[0];
  NSString *splitEndDecimalOnOctet2 = splitEndDecimalOnOctet[1];
  NSString *splitEndDecimalOnOctet3 = splitEndDecimalOnOctet[2];
  NSString *splitEndDecimalOnOctet4 = splitEndDecimalOnOctet[3];
  
  if ([splitStartDecimalOnOctet1 isEqualToString:splitEndDecimalOnOctet1] && [splitStartDecimalOnOctet2 isEqualToString:splitEndDecimalOnOctet2] && [splitStartDecimalOnOctet3 isEqualToString:splitEndDecimalOnOctet3]){
      //NSLog(@"3 octet is equal");
      //NSLog(@"Last end octet: %@", splitEndDecimalOnOctet4);
    if([splitEndDecimalOnOctet4 isEqualToString:@"11111111"]){
      CIDR =24;
    }else if ([splitEndDecimalOnOctet4 isEqualToString:@"01111111"]) {
      CIDR = 25;
    }else if ([splitEndDecimalOnOctet4 isEqualToString:@"00111111"]){
      CIDR = 26;
    }else if ([splitEndDecimalOnOctet4 isEqualToString:@"00011111"]){
      CIDR = 27;
    }else if ([splitEndDecimalOnOctet4 isEqualToString:@"00001111"]){
      CIDR = 28;
    }else if ([splitEndDecimalOnOctet4 isEqualToString:@"00000111"]){
      CIDR = 29;
    }else if ([splitEndDecimalOnOctet4 isEqualToString:@"00000011"]){
      CIDR = 30;
    }else if ([splitEndDecimalOnOctet4 isEqualToString:@"00000001"]){
      CIDR = 31;
    }else if ([splitEndDecimalOnOctet4 isEqualToString:@"00000000"]){
      CIDR = 32;
    }
  }else if ([splitStartDecimalOnOctet1 isEqualToString:splitEndDecimalOnOctet1] && [splitStartDecimalOnOctet2 isEqualToString:splitEndDecimalOnOctet2]){
      //NSLog(@"2 octet is equal");
      //NSLog(@"Last end octet: %@", splitEndDecimalOnOctet3);
    if ([splitEndDecimalOnOctet3 isEqualToString:@"00000001"]) {
      CIDR = 23;
    }else if ([splitEndDecimalOnOctet3 isEqualToString:@"00000011"]){
      CIDR = 22;
    }else if ([splitEndDecimalOnOctet3 isEqualToString:@"00000111"]){
      CIDR = 21;
    }else if ([splitEndDecimalOnOctet3 isEqualToString:@"00001111"]){
      CIDR = 20;
    }else if ([splitEndDecimalOnOctet3 isEqualToString:@"00011111"]){
      CIDR = 19;
    }else if ([splitEndDecimalOnOctet3 isEqualToString:@"00111111"]){
      CIDR = 18;
    }else if ([splitEndDecimalOnOctet3 isEqualToString:@"01111111"]){
      CIDR = 17;
    }else if ([splitEndDecimalOnOctet3 isEqualToString:@"11111111"]){
      CIDR = 16;
    }
  }
  return [self totalHostClean:CIDR];
    //return true;
}
 
-(long)totalHostClean:(int)cidr{
  long int totalHost = pow(2, (32-cidr)) - 2;
  return totalHost;
}
 
-(id)convertToBinWithDecimal:(int)decimal{
  NSMutableString * binString = [[NSMutableString alloc] init];
  int spacing = pow(2, 3);
  int width = (sizeof(decimal)) * spacing;
  int binaryDigit = 0;
  int integer = decimal;
  while( binaryDigit < width ){
    binaryDigit++;
    [binString insertString:((integer & 1) ? @"1" : @"0" )atIndex:0];
    if( binaryDigit % spacing == 0 && binaryDigit != width ){
      [binString insertString:@" " atIndex:0];
    }
    integer = integer >> 1;
  }
  return binString;
}
 
-(long)convertToDecimalWithBin:(NSString *)bin{
  long decimal_converted = strtol([bin UTF8String], NULL, 2);
  return decimal_converted;
}
 
 
@end
Добавлено через 1 час 0 минут
И все равно не понятно мне дальше как же это считать ((

Добавлено через 6 минут
mobidevelop, http://infocisco.ru/prefix_network_mask.html
 
Текущее время: 21:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru