c++ - C++ 中任意长度字符串的 strtoull

标签 c++ string type-conversion

我有一个程序接受一个表示长度最多为 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/

相关文章:

Java 分割分隔符

java - 字符串中的十六进制到java中的文件

object - Monotouch:将对象转换为NSObject

c++ - 这个从 long in a union 到 char* 和 back 的转换是做什么的?

jsf - javax.faces.component.UIInput.CONVERSION 与 javax.faces.converter.*

c++ - 从 header 构建 cpp 骨架的任何跨平台方式?

java - 正则表达式根据确切的字符拆分,除非在它之前用反斜杠转义

c++ - 如何打印 const 字符数组?

c++ - 编译时出现信号/槽错误

c++ - QTimer 随着每次启动/停止而变得更快