Я портирую некоторый код с ruby на C ++. Нам нужно хранить адреса IPv6 в лексикографическом формате / порядке в Redis для выполнения запросов диапазона (см. индексирование). Исходный код преобразует каждый IPv6-адрес в его десятичное представление и ноль в ширину до 40 символов. (Lib используется для IPv4 IPRange — смотрите комментарии)
Новый код в основном написан на C ++, но использует libcidr
для анализа IP-адресов и манипуляций. Следовательно, подойдет любой ответ на C или C ++. Формат у меня на данный момент есть in6_addr
определяется как:
struct in6_addr {
unsigned char s6_addr[16]; /* IPv6 address */
};
Заметки:
__uint128_t
которого я хотел бы избежать, поскольку он имеет целевые требованияВопросы:
char[16]
в лексикографическом порядке (вместо десятичного представления)?заранее спасибо
Задача ещё не решена.
Других решений пока нет …