如何将ZZ转换为二进制?

3

我正在使用NTL库来实现我的代码,需要将一个ZZ数转换为二进制,然后从中取出一个子串并将其转换为十进制。如何处理?

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

上面的代码给我报了这个错误:“分段错误(核心已转储)”
编辑:上面的代码现在可以工作,但是它返回的不是八进制字符串,而是垃圾值。

BytesfromZZ 无法正常工作。我正在寻找内置的替代方案。 - Pratibha
我不明白为什么人们会选择踩而不是提供解决方案。 - Pratibha
因为您没有展示任何代码。请向我们展示您的代码以及出现问题的位置,这样我们或许可以提供帮助。 - Joe
我已经编辑了问题并添加了代码行。抱歉,即使使用4个空格,它仍无法格式化为代码。 - Pratibha
1
这个页面来看,BytesFromZZ返回的是原始字节,而不是八进制字符串。我还注意到你正在使用NumBits()而不是NumBytes(),这可能是错误的。 - Hasturkun
显示剩余2条评论
2个回答

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

1

数组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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接