我正在使用NTL库来实现我的代码,需要将一个ZZ数转换为二进制,然后从中取出一个子串并将其转换为十进制。如何处理?
ZZ N;
unsigned char pp[200];
BytesFromZZ(pp,N,NumBits(N));
上面的代码给我报了这个错误:“分段错误(核心已转储)”
编辑:上面的代码现在可以工作,但是它返回的不是八进制字符串,而是垃圾值。
数组pp
保存着N
的字节表示,必须分配与NumBytes(N)
相等的大小。否则,如果pp
的长度小于NumBytes(N)
,则会引发SegFault错误。
此外,由于Intel CPU的小端模式,pp
以相反的顺序将N
表示为字节字符串。
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;
BytesFromZZ
返回的是原始字节,而不是八进制字符串。我还注意到你正在使用NumBits()
而不是NumBytes()
,这可能是错误的。 - Hasturkun