|
|
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
Нужно получать из стринга типа 192.134.123.121 ип адреc виде byte[]. Не охота парсить самому , но метода который такое далает я почемуто не нашел даже в таких классах как InetAdress(он то мне кстати и нужен в итоге, но у него нет конструктора для String, только для byte[]) и Socket. Если кто знает что можно для этих целей использовать подскажите плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 21:54:19 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
Не, ну не ёмаё! Чё тут парсить то? Я думал я самый ленивый программист Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 22:29:21 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
Сори, 127 необходимо воспринимать как 128:) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 22:34:08 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
По хорошему надо бы регулярное выражение. Но у меня книжки сейчас нет, а так я их не помню, ибо в джаве с ними не работал нифига. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 22:35:55 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
пожалуй сей способ самый сложный :) можно попроще: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 22:37:30 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
SarinПо хорошему надо бы регулярное выражение. такое подойдет? Код: plaintext 1. ну а потом по группам извлекать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 22:40:05 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
unicornmirageпожалуй сей способ самый сложный :) можно попроще: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Ох! Точно! Я то думал у меня совсем ум за разум сс скриптовыми языками зашёл. Долго пялился в джава док на предмет сплита. А джава док был по 1.3. Вот я и решил на всякий пожарный написать так как написал=) Про регулярное выражение не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 22:53:52 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
http://java.sun.com/j2se/1.4.2/docs/api/java/net/Inet4Address.html#getAddress() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2007, 23:47:13 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
Всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 02:10:09 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
unicornmirageпожалуй сей способ самый сложный :) можно попроще: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. А разве вот тут (byte)Integer.parseInt(numbers [i]) не надо 128 отнимать? byte ведь в джаве от -128 до 127 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 11:21:12 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
действительно, в char надо засовывать или в String и, по-моему, "." в split зарезервирована. поэтому ее надо на что-то заменить String ip = "192.1 68.10.250"; String[] numbers = ip.replace('.', 'x').split("x"); char[] n = new char[numbers.length]; for(int i=0; i<numbers.length; i++) { try { n = (char)Integer.parseInt(numbers); } catch(NumberFormatException e) { } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 13:11:04 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
i23mдействительно, в char надо засовывать или в String и, по-моему, "." в split зарезервирована. поэтому ее надо на что-то заменить че за бред, надо просто заэкранировать точку в регэкспе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 13:18:50 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
InetAddress ia= Inet4Address.getByName("192.134.123.121"); byte[] buf = ia.getAddress(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 13:36:50 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
Да, похоже ето самый подходящий вариант, почему то в апи где я смотрел не было написано что в getByName можно передавать строковое представление ип. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 14:14:12 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
maytonInetAddress ia= Inet4Address.getByName("192.134.123.121"); byte[] buf = ia.getAddress(); Нда... А мы тут выпендривались... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 16:26:53 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
maytonInetAddress ia= Inet4Address.getByName("192.134.123.121"); byte[] buf = ia.getAddress(); возвратит [-64, -122, 123, 121] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 19:51:37 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
Всё верно. В Java значение байта варьируется от -128 до 127. Чтобы получить unsigned представление байта выполните добавление 256 для отрицательных чисел массива. И еще раз... учите матчасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 19:55:49 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
maytonВсё верно. В Java значение байта варьируется от -128 до 127. Чтобы получить unsigned представление байта выполните добавление 256 для отрицательных чисел массива. И еще раз... учите матчасть. Спасибо за пожелание :) Наверное Вы в прошлой жизни были Лениным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 20:21:03 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
ZelebobaДа, похоже ето самый подходящий вариант, почему то в апи где я смотрел не было написано что в getByName можно передавать строковое представление ип. Спасибо. http://java.sun.com/j2se/1.4.2/docs/api/java/net/InetAddress.html#getByName(java.lang.String) [quot автор] The host name can either be a machine name, such as "java.sun.com", or a textual representation of its IP address. If a literal IP address is supplied, only the validity of the address format is checked. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 23:16:22 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
unicornmirageСпасибо за пожелание :) Наверное Вы в прошлой жизни были Лениным? Ну.. знаете-ли. Я-бы предпочёл - менее пассионарную личность. Я долго наблюдал, как вы с коллегами безуспешно пытались написать правильный шаблон для разбора IP адреса. Но вы его так и не написали правильно. Потому-что не учли различных нотаций записи адреса. Лично я их знаю три: десятичная : 192.134.123.121 (в нашем примере) шестнадцатиричная : 0xC0.0x86.0x7B.0x79 восьмеричная : 0300.0206.0173.0171 Некоторые нотации реально поддерживаются браузерами. К примеру, адрес скруля может выглядеть так http://0xC3.0x80.0x79.0xFE Есть ещё упакованный вид, когда номера сеток и машин не разделяются точками (и десятичная нотация никак не мапится в соответствующие разряды). Еще один пример Код: plaintext 1. 2. 3. С учётом этого всего форм записи получается шесть. Пускай меня поправят специалисты по сетям, если не забыл упомянуть еще чего-то. Тоесть ваш парсер будет работать только в одном из шести случаев, что, согласитесь достаточно грустно и стыдливо. Кроме того, диапазон также желательно проверять, поскольку выражение 999.999.999.999 успешно проходит через фильтр regexp-ов но как адрес фактически не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 00:00:45 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
maytonВсё верно. В Java значение байта варьируется от -128 до 127. Чтобы получить unsigned представление байта выполните добавление 256 для отрицательных чисел массива. И еще раз... учите матчасть. А прибавление 128 не помогает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 00:05:15 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
уважаемый mayton , я не в коей мере не хотел вас обидеть, дело в том что вы говорите уже о деталях, которые пусть решает автор этой темы сам, потому что его основной вопрос сводился - как распарсить строку. и в примерах, приведенных Sarin-ым и мной можно потом обработать конечный результат - числовой без проблем, и дальше строить более гибкий дизайн кода, о котором вы также упомянули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 00:19:56 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
Я и не думал обижатся. А ведь в эту самую минуту в какой-нибудь южной стране сидит человек и думает: вот сейчас сяду в пирогу и поеду за бананами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 00:28:36 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
maytonЯ и не думал обижатся. А ведь в эту самую минуту в какой-нибудь южной стране сидит человек и думает: вот сейчас сяду в пирогу и поеду за бананами... я про Ленина :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 00:31:33 |
|
||
|
IP adress из стринга в byte[] ?
|
|||
|---|---|---|---|
|
#18+
mayton десятичная : 192.134.123.121 (в нашем примере) шестнадцатиричная : 0xC0.0x86.0x7B.0x79 восьмеричная : 0300.0206.0173.0171 Напишите об этом в Sun, потому как: http://java.sun.com/j2se/1.4.2/docs/api/java/net/Inet4Address.html автор Textual representation of IP addresses Textual representation of IPv4 address used as input to methods takes one of the following forms: d.d.d.d d.d.d d.d d When four parts are specified, each is interpreted as a byte of data and assigned, from left to right, to the four bytes of an IPv4 address. PS Предлагаю от себя два варианта - двоичная форма записи и троичная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 01:18:21 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34521289&tid=2145762]: |
0ms |
get settings: |
10ms |
get forum list: |
40ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
67ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
94ms |
get tp. blocked users: |
3ms |
| others: | 292ms |
| total: | 541ms |

| 0 / 0 |
