从大整数ZZ(在NTL中声明)到十六进制

时间:2012-09-26 13:45:49

标签: c++ hex ntl

我目前正在使用NTL来处理大整数。此库中的大整数声明为ZZ。我想从ZZ号码变为十六进制。但是,我检查时,NTL不支持从ZZ到十六进制的转换。

所以我的问题是我如何从ZZ(或者代表大十进制数的字符串)转到十六进制形式?如果有人可以提供帮助,我更喜​​欢使用这个库的功能直接从ZZ转到十六进制

1 个答案:

答案 0 :(得分:0)

步骤1:大数字xx最初被视为字符串s

步骤2:假设字符串s的长度为l,则s = s [0] s [1] ... s [l-1]。我们从位置0开始读取s的每个字符,每次使用int digit = atoi(ts.c_str())将这个数字转换为整数变量数字;然后我们使用递归关系值= 10 * value + digit,其中value被声明为ZZ并初始化为0.在遍历所有数字后,我们将字符串传递给ZZ值

步骤3:现在转换为十六进制形式,使用NTL我们可以计算ZZ数的模数16。因此,从值%2开始,然后计算(值 - 值%16)/ 16并以此方式继续,我们得到十六进制形式。