Как конвертировать 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;