19 / 11 / 0
Регистрация: 02.09.2010
Сообщений: 235
|
|
1 | |
Преобразование ipv6 в бинарную строку07.02.2012, 00:40. Показов 4323. Ответов 6
Метки нет (Все метки)
IPv6 адрес это 128-битный адрес. Он разделяется на части по 16 бит, которые преобразуются в 4-значные шестнадцатеричные числа и разделяются двоеточиями.
Представление адресов IPv6 может быть еще более упрощено путем удаления начальных нулей в каждом 16-битном блоке. ля дальнейшего упрощения адресов IPv6 сплошные последовательности 16-битных блоков из нулей (0) в двухточечно-шестнадцатеричном формате могут быть сокращены до :: (т. н. двойное двоеточие). В природе адрес может быть таким: FF02::2 И таким: 2001:330:19:1ef::1 И таким: 2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d Логика преобразования в бинарную форму довольно сложна... Нужно это всё как-то хранить и обрабатывать. К примеру у меня есть массив char ipv6[16] Есть ли специальная рабочая функция чтобы туда поместить ipv6 адрес? Или может быть кто-то реализовывал подобную?
0
|
07.02.2012, 00:40 | |
Ответы с готовыми решениями:
6
Перевести длинную бинарную строку в строку с десятичными цифрами Получение данных с Com-порта, преобразование строки в бинарную последовательность Получить бинарную строку Преобразование DNS имени в IPv6 |
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
07.02.2012, 01:35 | 2 |
Я всё понял кроме этого:
"Для дальнейшего упрощения адресов IPv6 сплошные последовательности 16-битных блоков из нулей (0) в двухточечно-шестнадцатеричном формате могут быть сокращены до :: (т. н. двойное двоеточие)." То есть я так понял, если в блоке ОДНИ ноли, то они заменяются двоеточием? А вобще вся это делается на раз. Если моё предположение на счёт двоеточий верно, то замени его вручную нолям и используй готовый инструсмент Вот сюда я закинул исходник который тебе нужен Перевод в 9-чную систему счисления
1
|
08.02.2012, 00:28 | 3 | |||||
Можно сделать через регексы, вместо char удобней unsigned short, если правильно понял прога должна переводить std::string в vector<unsigned short> в правильном порядке
1
|
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
|
|
08.02.2012, 00:41 | 4 |
инициализировать бинарное поле нулями. обойти адрес с начала, преобразовывая и записывая блоки, до первой встречи ::. если не встретилось, то все ок, бинарная строка получена. если встретилось, то начать обход блоков с конца, до встречи ::. т.к. двух :: в одном адресе быть не может, то должно сработать.
1
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|||||||||||
21.02.2012, 21:44 | 7 | ||||||||||
128 bit integer есть в GCC:
http://gcc.gnu.org/onlinedocs/... nt128.html Знаковый объявляется так:
0
|
21.02.2012, 21:44 | |
21.02.2012, 21:44 | |
Помогаю со студенческими работами здесь
7
Записать бинарную строку в SQLite Привести бинарную строку к регулярному виду Передать бинарную строку в виде последовательности байт, перед которой идёт её длина DHCP IPv6, тунелирование IPv6 в Cisco Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |