Как конвертировать ZZ в двоичный файл?

Я использую библиотеку NTL для реализации своего кода, и мне нужно число ZZ, которое я должен преобразовать в двоичный файл, затем взять из него подстроку и преобразовать эту подстроку в десятичную. Как я могу это сделать?

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

Приведенный выше код дает мне эту ошибку: "Ошибка сегментации (ядро сброшено)"

РЕДАКТИРОВАТЬ: вышеуказанный код работает сейчас, но вместо восьмеричной строки он возвращает значения мусора.

1 ответ

Вы должны использовать NumBytes, и результатом будет обратная строка.

Массив pp который содержит байтовое представление N должен быть выделен размером, равным NumBytes(N). В противном случае вы получите SegFault, если длина pp меньше чем NumBytes(N). Вдобавок, вероятно, из-за Little-Endianess процессоров Intel, 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;
Другие вопросы по тегам