我正在使用 NTL 库来实现我的代码,我必须将 ZZ 数字转换为二进制,然后从中获取一个子字符串并将该子字符串转换为十进制。我怎样才能做到这一点?
ZZ N;
unsigned char pp[200];
BytesFromZZ(pp,N,NumBits(N));
上面的代码给了我这个错误:“分段错误(核心转储)”
编辑:上面的代码现在正在工作,但它没有给出八进制字符串,而是返回垃圾值。
您应该使用 NumBytes,结果是一个反转的字符串。
pp
保存字节表示的数组N
必须分配大小等于NumBytes(N)
。否则,如果 的长度pp
小于,则会出现 SegFault NumBytes(N)
。此外,可能是由于 Intel CPU 的 Little-Endianess,以相反的顺序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;