我有一个程序接受一个表示长度最多为 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);
关于c++ - C++ 中任意长度字符串的 strtoull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7376844/