У меня есть программа, которая принимает строку, представляющую число длиной до 256 бит, которое мне нужно расширить до 512 бит. Строка представляет число в шестнадцатеричном формате.
Как это работает, у меня есть функции для преобразования строк в 64-битные, 128-битные или 256-битные числа, где 128-битная функция дважды вызывает 64-битную функцию, 256-битная функция вызывает 128-битный один дважды, а 64-битный использует либо strotull
, либо вручную преобразует строку.
Значения, превышающие 64 бита, хранятся в массиве 64-битных записей.
Это уродливо, трудно понять и подвержено ошибкам, и я хочу выбросить все это. Учитывая, что strtoull
уже хорошо обрабатывает 64-битные значения, мне было интересно, есть ли какая-нибудь стандартная библиотека, которая будет принимать строку произвольной длины и преобразовывать ее в массив чисел.
Это похоже на довольно простую операцию разбора строки, и я не хочу изобретать колесо.
Примечание:
Из-за проблем с лицензированием (я работаю в большой корпорации, далекой от покупки или принятия законных решений), мне нужно использовать только стандартные библиотеки (GNU, Boost, STL и т. Д.), Иначе это просто возьмет меня слишком долго, чтобы получить доступ к решению.