Форум программистов, компьютерный форум 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
05.10.2013, 13:41     Расчитать маскку сети исходя из диапозона
Добрый день Господа!

Никак не могу понять как же считается маска сети зная ее Network & Broadcast IP's и как это можно сделать в Objective C

Я новичек в Objective C... Пока что накидал вот такое:

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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
//
//  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;
 
-(int)getCIDRprefixByMask:(NSString *)mask{
  if ([mask isEqualToString: @"255.255.255.255"]){
    cidrPrefix = 32;
  }else if ([mask isEqualToString:@"255.255.255.254"]) {
    cidrPrefix = 31;
  }else if ([mask isEqualToString:@"255.255.255.252"]){
    cidrPrefix = 30;
  }else if ([mask isEqualToString:@"255.255.255.248"]){
    cidrPrefix = 29;
  }else if ([mask isEqualToString:@"255.255.255.240"]){
    cidrPrefix = 28;
  }else if ([mask isEqualToString:@"255.255.255.224"]){
    cidrPrefix = 27;
  }else if ([mask isEqualToString:@"255.255.255.192"]){
    cidrPrefix = 26;
  }else if ([mask isEqualToString:@"255.255.255.128"]){
    cidrPrefix = 25;
  }else if ([mask isEqualToString:@"255.255.255.0"]){
    cidrPrefix = 24;
  }else if ([mask isEqualToString:@"255.255.254.0"]){
    cidrPrefix = 23;
  }else if ([mask isEqualToString:@"255.255.252.0"]){
    cidrPrefix = 22;
  }else if ([mask isEqualToString:@"255.255.248.0"]){
    cidrPrefix = 21;
  }else if ([mask isEqualToString:@"255.255.240.0"]){
    cidrPrefix = 20;
  }else if ([mask isEqualToString:@"255.255.224.0"]){
    cidrPrefix = 19;
  }else if ([mask isEqualToString:@"255.255.192.0"]){
    cidrPrefix = 18;
  }else if ([mask isEqualToString:@"255.255.128.0"]){
    cidrPrefix = 17;
  }else if ([mask isEqualToString:@"255.255.0.0"]){
    cidrPrefix = 16;
  }else if ([mask isEqualToString:@"255.254.0.0"]){
    cidrPrefix = 15;
  }else if ([mask isEqualToString:@"255.252.0.0"]){
    cidrPrefix = 14;
  }else if ([mask isEqualToString:@"255.248.0.0"]){
    cidrPrefix = 13;
  }else if ([mask isEqualToString:@"255.240.0.0"]){
    cidrPrefix = 12;
  }else if ([mask isEqualToString:@"255.224.0.0"]){
    cidrPrefix = 11;
  }else if ([mask isEqualToString:@"255.192.0.0"]){
    cidrPrefix = 10;
  }else if ([mask isEqualToString:@"255.128.0.0"]){
    cidrPrefix = 9;
  }else if ([mask isEqualToString:@"255.0.0.0"]){
    cidrPrefix = 8;
  }else if ([mask isEqualToString:@"254.0.0.0"]){
    cidrPrefix = 7;
  }else if ([mask isEqualToString:@"252.0.0.0"]){
    cidrPrefix = 6;
  }else if ([mask isEqualToString:@"248.0.0.0"]){
    cidrPrefix = 5;
  }else if ([mask isEqualToString:@"240.0.0.0"]){
    cidrPrefix = 4;
  }else if ([mask isEqualToString:@"224.0.0.0"]){
    cidrPrefix = 3;
  }else if ([mask isEqualToString:@"192.0.0.0"]){
    cidrPrefix = 2;
  }else if ([mask isEqualToString:@"128.0.0.0"]){
    cidrPrefix = 1;
  }else if ([mask isEqualToString:@"0.0.0.0"]){
    cidrPrefix = 0;
  }else{
    NSLog(@"Some errors with converting CIDR prefix");
  }
  NSLog(@"CIDR: %i", cidrPrefix);
  
    //NSLog(@"")
  return cidrPrefix;
}
 
-(int)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);
  
  // NOTES: Log for now decimal
  //NSLog(@"Start network decimal: %i \n", startDecimalIp);
  //NSLog(@"End network decimal: %i \n", 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 ([splitStartDecimalOnOctet3 isEqualToString:splitEndDecimalOnOctet3]) {
    NSLog(@"Last bits start: %@ \n", splitStartDecimalOnOctet3);
    NSLog(@"Last bits end: %@ \n", splitEndDecimalOnOctet3);
    NSLog(@"First 3 octet is equal");
  }else if ([splitStartDecimalOnOctet1 isEqualToString:splitEndDecimalOnOctet1] && [splitStartDecimalOnOctet2 isEqualToString:splitEndDecimalOnOctet2]){
    NSLog(@"Last bits start: %@ \n", splitStartDecimalOnOctet3);
    NSLog(@"Last bits end: %@ \n", splitEndDecimalOnOctet3);
    NSLog(@"First 2 octet is equal");
    // Reverse END of octet 2
    NSMutableString *reversedSplitEndDecimalOnOctet3 = [NSMutableString stringWithCapacity:[splitEndDecimalOnOctet3 length]];
    
    [splitEndDecimalOnOctet3 enumerateSubstringsInRange:NSMakeRange(0,[splitEndDecimalOnOctet3 length]) options:(NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences) usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {                       [reversedSplitEndDecimalOnOctet3 appendString:substring];
    }];
    
    NSMutableString *reversedSplitEndDecimalOnOctet2 = [NSMutableString stringWithCapacity:[splitEndDecimalOnOctet2 length]];
    
    [splitEndDecimalOnOctet2 enumerateSubstringsInRange:NSMakeRange(0,[splitEndDecimalOnOctet2 length]) options:(NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences) usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {                       [reversedSplitEndDecimalOnOctet2 appendString:substring];
    }];
    
    long int test = [startDecimalIpBin intValue] & [endDecimalIpBin intValue];
    long int first = [startDecimalIpBin intValue];
    long int last = [splitEndDecimalOnOctet3 intValue];
    first &= last;
    NSLog(@"Reverse last: %@", splitStartDecimalOnOctet);
    NSString* convertedTest = [NSString stringWithFormat:@"%ld", test];
    maskDecimal = [self convertToDecimalWithBin:convertedTest];
    maskToConvert = [NSString stringWithFormat:@"255.255.%li.0", maskDecimal];
    NSLog(@"Network mask: %@", maskToConvert);
    
    int CIDR = [self getCIDRprefixByMask:maskToConvert];
    [self totalHostClean:CIDR];
  }
  
  NSLog(@"Start binary: %@.%@.%@.%@", splitStartDecimalOnOctet1, splitStartDecimalOnOctet2, splitStartDecimalOnOctet3, splitStartDecimalOnOctet4);
  NSLog(@"End binary: %@.%@.%@.%@", splitEndDecimalOnOctet1, splitEndDecimalOnOctet2, splitEndDecimalOnOctet3, splitEndDecimalOnOctet4);
  
  return 0;
}
 
-(long int)totalHostClean:(int)mask{
    //long int totalHost = (2^(32-mask)) -2;
  mask = 19;
  long int totalHost = pow(2, (32-mask)) - 2;
  NSLog(@"Total %li hosts in network", totalHost);
  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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru