Russian Qt Forum
Ноябрь 26, 2024, 11:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Как поместить в int 8-битный код русского символа?  (Прочитано 13795 раз)
Alexu007
Гость
« : Март 11, 2014, 23:42 »

Код
C++ (Qt)
Qchar X = 'f';
int A = X.uncode();  // A = 102
 
Qchar X = 'ф';
int A = X.uncode();  // A = 1092




Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Март 11, 2014, 23:50 »

Для этого нужно решить в какой кодировке вы хотите получить этот код.
Записан
Alexu007
Гость
« Ответ #2 : Март 12, 2014, 00:03 »

В виндосовской.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Март 12, 2014, 00:05 »

В виндосовской.
Используйте QTextCodec, он для этого специально предназначен.
Записан
Alexu007
Гость
« Ответ #4 : Март 13, 2014, 08:31 »

А как лучше сделать побайтовый доступ к файлу, чтобы чтение-запись быстрее работали? Я использую старые добрые:

Код
C++ (Qt)
fread (&read_byte, sizeof(char), 1, inpf);
fwrite(&write_byte, sizeof(char), 1, outf);
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #5 : Март 13, 2014, 08:40 »

А как лучше сделать побайтовый доступ к файлу, чтобы чтение-запись быстрее работали? Я использую старые добрые:
Например, QTextStream. Ему можно сразу указать кодек для той кодировки, в которой лежат данные в этом файле.
Записан
Alexu007
Гость
« Ответ #6 : Март 13, 2014, 09:02 »

Не, мне не нужен кодек. Я хочу шифровать любые файлы - не только данные. Это может быть и ехе-шник и вообще что угодно. Они же все из байтов состоят. Поэтому мне нужно читать за раз определённое количество байт - поток для этого подходит?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #7 : Март 13, 2014, 09:42 »

Не, мне не нужен кодек. Я хочу шифровать любые файлы - не только данные. Это может быть и ехе-шник и вообще что угодно. Они же все из байтов состоят. Поэтому мне нужно читать за раз определённое количество байт - поток для этого подходит?
Подходит, но проще использовать QFile.
Записан
OKTA
Гость
« Ответ #8 : Март 13, 2014, 09:45 »

Если вопрос в шифровании, то кодировки-то тут при чем? Когда работаешь именно с байтами, никакие кодировки не нужны - шифруешь байты, дешифруешь байты... Если же нужен поток, то лучше QDataStream.

Reading and writing raw binary data
You may wish to read/write your own raw binary data to/from the data stream directly. Data may be read from the stream into a preallocated char * using readRawData(). Similarly data can be written to the stream using writeRawData(). Note that any encoding/decoding of the data must be done by you.
A similar pair of functions is readBytes() and writeBytes(). These differ from their raw counterparts as follows: readBytes() reads a quint32 which is taken to be the length of the data to be read, then that number of bytes is read into the preallocated char *; writeBytes() writes a quint32 containing the length of the data, followed by the data. Note that any encoding/decoding of the data (apart from the length quint32) must be done by you.
Записан
Alexu007
Гость
« Ответ #9 : Март 13, 2014, 14:52 »

Кое-какие тексты тоже шифровать приходится, например имя файла - я пишу прогу, которая будет шифровать и сам файл и его имя, и на выходе будет выдавать что-то вроде: "keffmznimkkasvwsrenz.320". А при расшифровке восстанавливать и исходный файл и имя. С этим и вышла заминка, с латинскими именами файлов всё работало, с русскими лажала.

В общем то я уже всё переделал, вопрос только в скорости чтения-записи с диска. Я пока реализовал самый простой вариант: чтение-запись по 1 байту.
Записан
OKTA
Гость
« Ответ #10 : Март 13, 2014, 15:29 »

а какой алгоритм шифрования?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #11 : Март 13, 2014, 15:32 »

Я пока реализовал самый простой вариант: чтение-запись по 1 байту.
Ну это не очень хорошее решение. Лучше читайте сразу блоками, например, килобайт так по 32 или 64, обрабатывайте и сохраняйте.
Записан
OKTA
Гость
« Ответ #12 : Март 13, 2014, 15:38 »

Если шифр потоковый, то побайтово читать и писать мне кажется будет оптимальнее. Если же блочный, то по размеру блока конечно.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #13 : Март 13, 2014, 15:44 »

Если шифр потоковый, то побайтово читать и писать мне кажется будет оптимальнее. Если же блочный, то по размеру блока конечно.
Не имеет значения какой шифр. Улыбающийся
Всегда будет оптимальней получать от ядра большой блок данных, чем один байт.
Записан
OKTA
Гость
« Ответ #14 : Март 13, 2014, 15:48 »

Да, согласен  Улыбающийся
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.099 секунд. Запросов: 22.