Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перевод ancii в hex
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
RazrFalcon
Есть такая вот функция:
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
    QByteArray pass;
    QDataStream pds(&pass, QIODevice::WriteOnly);
    pds.setByteOrder(QDataStream::LittleEndian);
    for (int i = 0; i < password.count(); ++i)
        pds << (quint8)password.at(i).unicode();
    pass = pass.toHex();
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

И это верно работает. Но я хотел бы найти более короткий вариант. По тому, что думаю что тут слишком много не нужного.

PS: кодировка нужна именно виндовая.
Sokoloff
Цитата(RazrFalcon @ 20.8.2012, 19:13) *
Есть такая вот функция:
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
    QByteArray pass;
    QDataStream pds(&pass, QIODevice::WriteOnly);
    pds.setByteOrder(QDataStream::LittleEndian);
    for (int i = 0; i < password.count(); ++i)
        pds << (quint8)password.at(i).unicode();
    pass = pass.toHex();
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

И это верно работает. Но я хотел бы найти более короткий вариант. По тому, что думаю что тут слишком много не нужного.

PS: кодировка нужна именно виндовая.


А чем QByteArray::toHex не устроил?
RazrFalcon
Результат другой.
Sokoloff
Цитата(RazrFalcon @ 21.8.2012, 21:17) *
Результат другой.

Давай пример, что на входе и что надо получить.
PAFOS
QByteArray pass = QTextCodec::codecForName("Windows-1251").makeEncoder().fromUnicode(password);
RazrFalcon
Спасибо. Почти сработало. С русскими символами разные результаты.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.