在c++中搜索任意长度的字符串

strtoull for arbitrary length strings in C++

本文关键字:字符串 任意长 搜索 c++      更新时间:2023-10-16

我有一个程序,它接受一个长度为256位的字符串,我需要将其扩展到512位。该字符串表示一个十六进制的数字。

它的工作方式是,我有将字符串转换为64位,128位或256位数字的函数,其中128位函数调用64位函数两次,256位函数调用128位函数两次,64位函数使用strotull或手动转换字符串。

大于64位的值存储在64位数组中。

这很难看,很难理解,而且容易出错,我想把它全部扔掉。考虑到strtoull已经可以很好地处理64位值,我想知道是否有一些标准库可以接受任意长度的字符串并将其转换为数字数组。

这似乎是一个非常基本的字符串解析操作,我不愿意重新发明轮子。


注意:

由于许可问题(我在一家大公司工作,远离购买或法律决策),我只需要使用标准库(GNU, Boost, STL等),否则我将花费太长时间才能获得解决方案。

有许多库可用于处理大数字。谷歌上出现的第一个词是GMP。它是LGPL,所以不应该有任何许可问题。

mpz_t i;
mpz_init_set_str (i, "0123456789abcdef0123456789abcdef...", 16);