Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Иван от Июль 30, 2012, 11:07



Название: Строка в двоичную систему счисления
Отправлено: Иван от Июль 30, 2012, 11:07
Доброго времени суток! Хочу реализовать алгоритм шифрования des, для этого мне необходимо считывать текст с виджета(пусть будет plain text edit) преобразовывать в hex,а затем из hex в двоичную систему, подскажите как правильнее и какими средствами это сделать:-)


Название: Re: Строка в двоичную систему счисления
Отправлено: mutineer от Июль 30, 2012, 11:08
ты хочешь получить строку, в которой записано двоичное представление или массив байтов?


Название: Re: Строка в двоичную систему счисления
Отправлено: Иван от Июль 30, 2012, 12:04
Думаю, массив байтов будет самое то:-)


Название: Re: Строка в двоичную систему счисления
Отправлено: mutineer от Июль 30, 2012, 12:05
QString::to<нужнаяКодировка>() вернет QByteArray, который и есть искомый массив байтов


Название: Re: Строка в двоичную систему счисления
Отправлено: Иван от Июль 30, 2012, 13:59
Я делаю так:
QByteArray qB;
QString str = QString("%1").arg(ui->plainTextEdit->toPlainText());
qB = str.toAscii();
получается что  каждый элемент массива - буква из строки, а не соответствующий ей   ascii символ, что не так?


Название: Re: Строка в двоичную систему счисления
Отправлено: Kurles от Июль 30, 2012, 14:14
Я делаю так:
QByteArray qB;
QString str = QString("%1").arg(ui->plainTextEdit->toPlainText());
qB = str.toAscii();
получается что  каждый элемент массива - буква из строки, а не соответствующий ей   ascii символ, что не так?
А не проще ли было сделать так:
Код
C++ (Qt)
QByteArray qB = ui->plainTextEdit->toPlainText().toAscii();
? И чем буква из строки отличается от соответствующему ей ascii символу?


Название: Re: Строка в двоичную систему счисления
Отправлено: mutineer от Июль 30, 2012, 15:10
получается что  каждый элемент массива - буква из строки, а не соответствующий ей   ascii символ, что не так?

Ну так и должно быть. Если читать каждый байт символом - получишь собсно букву, если считать байт числом - получишь код буквы


Название: Re: Строка в двоичную систему счисления
Отправлено: Иван от Июль 30, 2012, 15:43
А можно маленький примерчик?:-)


Название: Re: Строка в двоичную систему счисления
Отправлено: mutineer от Июль 30, 2012, 15:44
А можно маленький примерчик?:-)

Примерчик чего?


Название: Re: Строка в двоичную систему счисления
Отправлено: Kurles от Июль 30, 2012, 15:54
Код
C++ (Qt)
QByteArray qB = ui->plainTextEdit->toPlainText().toAscii()
вот же пример. Только учти, что символы, отличные от ASCII, в том числе, например, кирилица, будут потеряны, если не установить QTextCodec::codecForCStrings.


Название: Re: Строка в двоичную систему счисления
Отправлено: Иван от Июль 30, 2012, 16:27
Я просто не могу понять как мне увидеть результат-мою строку в ascii?и как это потом переводить в двоичную систему?


Название: Re: Строка в двоичную систему счисления
Отправлено: mutineer от Июль 30, 2012, 16:30
Код:
int a = qB.at(0);

Вот тебе код первого символа. Как выглядит строка или символ в памяти компьютера представляешь? И чем символ в памяти отличается от числа?


Название: Re: Строка в двоичную систему счисления
Отправлено: Kurles от Июль 31, 2012, 12:38
Такое впечатление, что тролят тут не очень тонко )


Название: Re: Строка в двоичную систему счисления
Отправлено: Igors от Июль 31, 2012, 12:44
Такое впечатление, что тролят тут не очень тонко )
Та отож. Вроде des - хз, наверное круто, но чего ж тогда плавать и тонуть в азах представления данных?


Название: Re: Строка в двоичную систему счисления
Отправлено: DmitryM от Июль 31, 2012, 17:15
DES блочный симметричный алгоритм шифрования, тебе нужно QString представить в виде массива байтов, а потом этот массив байтов пилить на блоки по 64 бит
так что юзай следующие методы
Код
C++ (Qt)
QVector<uint> toUcs4 () const
QByteArray toUtf8 () const
const ushort * utf16 () const