我有一个程序接受一个字符串,表示长度最多为256位的数字,我需要扩展到512位。该字符串表示十六进制数字。
它的工作方式是,我有将字符串转换为64位,128位或256位数字的函数,其中128位函数调用64位函数两次,256位函数调用128位一次两次,64位一次使用strotull
或手动转换字符串。
大于64位的值存储在64位条目的数组中。
这很丑陋,难以理解且容易出错,我想全力以赴。考虑到strtoull
已经很好地处理了64位值,我想知道是否有一些标准库将采用任意长度的字符串并将其转换为数字数组。
这似乎是一个非常基本的字符串解析操作,我不愿意重新发明轮子。
注意:
由于许可问题(我在一家大公司工作,远离采购或法律决策),我只需要使用标准库(GNU,Boost,STL等),否则它只会带我太长时间无法访问解决方案。
答案 0 :(得分:2)
有许多库可用于处理大数字。第一个出现在Google上的是GMP。这是LGPL,所以不应该有任何许可问题。
mpz_t i;
mpz_init_set_str (i, "0123456789abcdef0123456789abcdef...", 16);