2

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

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

上面的代码给了我这个错误:“分段错误(核心转储)”

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

4

2 回答 2

0

您应该使用 NumBytes,结果是一个反转的字符串。

于 2014-02-26T07:36:23.167 回答
0

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;
于 2020-09-28T14:52:15.663 回答