почему нельзя конвертировать Symbian CRSAPublicKey в дескриптор? - PullRequest
0 голосов
/ 08 ноября 2010

код следующий:

const CRSAPublicKey& iRSAPublicKey = mRSAKeyPair->PublicKey();
const TInteger& e = iRSAPublicKey.E();
HBufC8* exponent8 = e.BufferLC(); //failed to get the right result,it's garbled
TInt ei = e.ConvertToLongL();    //converted successfully,ei=65537

Может кто-нибудь сказать мне, почему BufferLC () не работает? Что-то важное, что я только что пропустил? заранее спасибо.

1 Ответ

0 голосов
/ 08 ноября 2010

Это не искажено, это просто двоичное представление целого числа , как указано в документации .Точно так же, как байт 0x33 является двоичным представлением для ASCII 3.

Я предполагаю, что вы хотите что-то печатное из TInteger.Для малых TInteger с, для которых IsConvertableToLong() имеет значение true, вы можете использовать подход ConvertToLong() с одной из перегрузок TDes::AppendNum().Для больших целых чисел, я думаю, вам нужно свернуть свою собственную функцию преобразования.Наиболее простой способ - это, вероятно, просто вывести двоичные байты представления в шестнадцатеричном виде.


Отредактировано, чтобы добавить: Вот непроверенный фрагмент для выполнения шестнадцатеричного преобразования.

...