crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Перевод ancii в hex
RazrFalcon
  опции профиля:
сообщение 20.8.2012, 18:13
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Есть такая вот функция:
    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
  опции профиля:
сообщение 21.8.2012, 16:41
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(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
  опции профиля:
сообщение 21.8.2012, 20:17
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Результат другой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 21.8.2012, 22:59
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(RazrFalcon @ 21.8.2012, 21:17) *
Результат другой.

Давай пример, что на входе и что надо получить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 23.8.2012, 16:27
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


QByteArray pass = QTextCodec::codecForName("Windows-1251").makeEncoder().fromUnicode(password);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 25.8.2012, 3:07
Сообщение #6


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Спасибо. Почти сработало. С русскими символами разные результаты.

Сообщение отредактировал RazrFalcon - 25.8.2012, 3:08
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 7:45