Какой тип данных я должен использовать для хранения IP-адреса?
Я вдруг только подумал об этом и застрял, решая, какой тип данных я должен использовать для хранения IP-адреса?
Я думал о NSString
; Но если мне понадобится последняя цифра для идентификации, я должен использовать float или double? И это также другая проблема, так как, когда число с плавающей или двойной может иметь более 1 десятичной точки?
Я, вероятно, задаю вопрос неправильно, потому что я действительно не знаю, как это задать.
IP-адрес приходит из формата XML <IP>192.168.1.1</IP>
, Есть идеи, как мне это сделать?
5 ответов
использованиеNSString
, Вы не собираетесь делать арифметику с этим. Если вам нужны отдельные компоненты, вы можете использовать NSArray
, но NSString
послужит вам просто для хранения IP-адреса.
В ответ на ваши потребности вы всегда можете получить последний символ в вашей строке, используя NSString
метод:
NSString *lastCharacter = [ip_string substringFromIndex: [ip_string length] - 1];
Где ip_string - строка, содержащая IP-адрес.
Редактировать в ответ на комментарий:
Код Логана хранит каждый элемент в IP-адресе, разделенный точкой в массиве. Таким образом, если IP-адрес равен 192.168.1.1, массив будет равен (192, 168, 1, 1).
Мой код хранит весь IP-адрес в строке, а затем получает последний символ в этой строке. [ip_string substringFromIndex: [ip_string length] - 1]
просто получает последний символ в строке, содержащей IP-адрес. Последний символ может быть найден в минус один символ.
Таким образом, если IP-адрес 192.168.1.1, lastCharacter
строка будет просто содержать номер 1
,
Я предложил этот код, потому что вы заявили, что вам нужно что-то сделать с последним символом в строке IP-адреса, а мой код показывает, как вы можете получить последний символ.
Используйте строку. Вам не нужно выполнять арифметику по IP, не так ли?
Обычно IP-адреса хранятся в виде строк или массивов целых чисел. Другой вариант - сохранить его как 32-разрядное целое число. Это действительно сводится к тому, что вы хотите сделать.
Я хотел бы использовать NSString
, Если вам нужно получить его по частям, используйте:
NSArray *pieces = [ipAddress componentsSeparatedByString: @"."];
192.168.1.1 считается IP-адресом по умолчанию для многочисленных домашних высокоскоростных беспроводных маршрутизаторов. Первоначально он использовался Linksys и, тем не менее, использовался в ряде других продуктов для домашних сетей, включая некоторые из продуктов Netgear, а также Westell и других.
Несмотря на то, что IP-адрес выделяется как IP-адрес по умолчанию для многих высокоскоростных широкополосных беспроводных маршрутизаторов, это не обязательно должно быть. Большое количество производителей устанавливают IP-адрес по умолчанию 192.168.1.1, чтобы продвигать стандартные условия прецессии и упростить для клиентов, впервые использующих свои сетевые системы, простой и эффективный способ.
Могут ли работать только Linksys, а также другие беспроводные маршрутизаторы, используя IP 192.168.1.1?
Конечно, нет, учитывая, что 192.168.1.1 определенно является непубличным IPv4-адресом, для работы с этим уникальным IP-адресом может быть разработан любой тип ноутбука или компьютера, модем, коммутатор или другая веб-система. Тем не менее, в большинстве случаев это не рекомендуется, поскольку существует множество продуктов, которые по умолчанию используют 192.168.1.1, что, в свою очередь, может вскоре вызвать проблемы взаимодействия со многими различными продуктами, использующими один и тот же IP. Также очень важно учитывать, что одно сетевое оборудование может иметь только один IP-адрес, если у вас есть несколько устройств, использующих частный IP-адрес, по крайней мере один из них должен быть настроен на альтернативное местоположение.