2012-02-06 5 views
0

Я вдруг подумал об этом и решил, какой тип данных я должен использовать для хранения IP-адреса?Какой тип данных я должен использовать для хранения IP-адреса?

О себе NSString; Но если мне понадобится последняя цифра для идентификации, следует ли использовать float или double? И это еще одна проблема, так как когда можно поплавать или удваивать значение более 1 десятичной точки?

Возможно, я задал неправильный вопрос, потому что я действительно не знаю, как это задавать.

IP-адрес получен из XML-формата <IP>192.168.1.1</IP>. Любая идея, как я должен это делать?

ответ

1

Использование 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-адреса, а мой код показывает, как вы можете получить последний символ.

+0

В чем разница между вашей строкой кода и символом @Logan Serman? Я могу понять, что означает код Логана Сермана, но твой я никогда раньше не видел. –

+0

См. Отредактированный ответ. Таким образом, это просто получение последнего символа в вашей строке IP-адреса. – DGund

+1

Ах! Это какой-то потрясающий метод! Спасибо чувак! Надо проверить это! Этот метод правильно возвращает значение NSString? Итак, если мне нужно целочисленное значение, я должен применить метод '[lastCharacter integerValue]' правильно? –

1

Используйте строку. Вам не нужно выполнять арифметику на IP-странице?

+0

На данный момент я не знаю, нужна ли мне какая-либо арифметика или алгоритм. Возможно нет. :) Спасибо за ваш ответ! –

1

Типично хранить IP-адреса в виде строк или массивов целых чисел. Другой вариант - сохранить его как 32-битное целое число. Это действительно сводится к тому, что вы хотите сделать.

+0

Массив целых чисел звучит как хорошая идея. Но вы сохраняете 4 цифры в 1 массиве? Или вы сохраняете весь IP-адрес, если вы это делаете, это не то же самое, что хранить его как NSString? –

+0

@Melvin Lai: двумя способами являются: 'var array = int [] {192,168,0,1}; // Или обратный' и 'var i = 192 << 24 + 168 << 16 + 0 << 8 + 1;'. Сохраняя его как 32-битное целое число, вы минимизируете необходимое пространство для хранения и имеете значение для индексирования. Массив просто дает вам упрощенный доступ к целой форме, если вам это нужно (скажем, вы делаете фильтр на основе маски, но не хотите использовать битовую логику, чтобы выйти из 168). Обратите внимание, что во всех случаях, если вы не делаете что-то довольно сложное, форма строки, вероятно, лучше всего с точки зрения простоты. – Guvante

1

Я бы использовал NSString. Если вам нужно, чтобы получить его по частям, используйте:

+0

Спасибо! Увидев так много ответов, я думаю, все ответили на один и тот же тип данных. Храните как 'NSString'. Но, видя свой код, я думаю, это тоже сработает! :) –

-1

192.168.1.1 считается стандартным IP-адресом для многочисленных домашних высокоскоростных беспроводных маршрутизаторов. Первоначально он использовался Linksys, но все же был замечен в ряде других продуктов домашней сети, в том числе некоторых из них, произведенных Netgear, а также Westell среди других.

Несмотря на то, что IP address выделяется как IP-адрес по умолчанию для множества высокоскоростных широкополосных беспроводных маршрутизаторов, это, по сути, не должно быть. Большое количество производителей установили IP-адрес по умолчанию на 192.168.1.1 как способ выхода на рынок стандартных условий прецессии и упрощения для клиентов в первый раз просто и эффективно настраивать свои собственные сетевые системы.

Возможно, только Linksys, а также другие беспроводные маршрутизаторы работают с использованием 192.168.1.1 IP?

Конечно, нет, учитывая, что 192.168.1.1 определенно является непубличным адресом IPv4, для работы с этим уникальным IP-адресом может быть разработан любой тип ноутбука или компьютера, модем, коммутатор или другая веб-система. Тем не менее, это не в большинстве случаев целесообразно, потому что есть много продуктов, которые по умолчанию равны 192.168.1.1, которые, в свою очередь, могут возникнуть сразу после многих разных продуктов, использующих один и тот же IP-адрес. Также очень важно учитывать, что на одном сетевом оборудовании может быть только один Ip, если у вас есть несколько единиц с использованием private IP address, в основном по крайней мере один должен быть скорректирован на альтернативное местоположение.

+1

У вас есть идея, что вы отвечаете? Это вопрос программирования, а не вопрос маршрутизатора. Большинство из нас на этом сайте знают, что такое маршрутизаторы, какие марки есть и что они делают. Пожалуйста, удалите этот ответ, поскольку он полностью не соответствует этому вопросу. –

Смежные вопросы