我目前正在使用 NTL 来处理大整数。这个库中的大整数被声明为 ZZ。我想从 ZZ 数字变为十六进制。但是,正如我检查的那样,NTL 不支持从 ZZ 到十六进制的转换。
所以我的问题是我怎样才能从 ZZ (或者可能代表大十进制数字的字符串)到十六进制形式?如果有人可以提供帮助,我更喜欢使用这个库的功能直接从 ZZ 转到十六进制
Step1:最初将大数xx作为字符串s
第二步:假设字符串 s 的长度为 l,那么 s=s[0]s[1]...s[l-1]。我们从位置 0 开始读取 s 的每个字符,每次我们使用 int digit = atoi(ts.c_str()); 将此数字转换为整数变量 digit; 然后我们使用递归关系 value=10*value+digit ,其中 value 被声明为 ZZ 并初始化为 0。遍历所有数字后,我们将字符串传递给 ZZ 值
第三步:现在转换为十六进制形式,使用 NTL 我们可以计算 ZZ 数的模 16。所以从 value%2 开始,然后计算 (value-value%16)/16 并以这种方式进行,我们得到了十六进制形式。