如何将ZZ转换为二进制?

时间:2013-02-04 09:32:09

标签: c ntl

我正在使用NTL库来实现我的代码,我必须使用ZZ编号,我必须将其转换为二进制,然后从中获取子字符串并将该子字符串转换为十进制。我怎么能这样做?

ZZ N;
unsigned char pp[200];
BytesFromZZ(pp,N,NumBits(N));

上面的代码给出了这个错误:“Segmentation fault(core dumped)”

编辑:上面的代码现在正在运行,但它没有给出八进制字符串,而是返回垃圾值。

2 个答案:

答案 0 :(得分:0)

您应该使用NumBytes,结果是反向字符串。

答案 1 :(得分:0)

保存pp字节表示形式的数组N的大小必须等于NumBytes(N)。否则,如果pp的长度小于NumBytes(N),则会出现SegFault。 另外,可能是由于Intel CPU的小巧性,ppN表示为字节串,其顺序相反。

ZZ N;
// assigning whatever value to N
unsigned char* pp = new unsigned char[NumBytes(N)];
BytesFromZZ(pp, N, NumBytes(N)); // pp = byte-representation of N
delete[] pp;