0 / 0 / 0
Регистрация: 08.08.2014
Сообщений: 22
|
||||||
1 | ||||||
Преобразовать int в QByteArray01.03.2015, 23:12. Показов 13412. Ответов 3
Метки нет (Все метки)
Вообщем необходимо число int преобразовать в массив байтов QByteArray:
пока делаю так:
val: -291 = -1 * -1 * -2 * -35 val: -141 = -1 * -1 * -1 * 115 val: -200 = -1 * -1 * -1 * 56 val: 105 = 0 * 0 * 0 * 105 Как то не правильно вроде работает. Возможно есть какой-то стандартный способ? это же Qt.
0
|
01.03.2015, 23:12 | |
Ответы с готовыми решениями:
3
QByteArray в int Перевести QByteArray в int Рефакторинг из QByteArray в int и наоборот Запись signed short int в QByteArray |
Linux-оид
120 / 69 / 9
Регистрация: 15.02.2011
Сообщений: 374
|
||||||
02.03.2015, 01:06 | 2 | |||||
Конструкторы QByteArray не принимают чистый int.
- QByteArray & append(const QByteArray & ba) - QByteArray & append(const QString & str) - QByteArray & append(const char * str) - QByteArray & append(const char * str, int len) - QByteArray & append(char ch) QByteArray QByteArray::number(int n, int base = 10) Returns a byte array containing the string equivalent of the number n to base base (10 by default)
0
|
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
|
||||||
02.03.2015, 01:32 | 3 | |||||
Почему? Всё правильно.
(uint)(-291) = 0xFFFFFEDD (unsigned char)(-1) = 0xFF (unsigned char)(-2) = 0xFE (unsigned char)(-35) = 0xDD Никаких противоречий не вижу. Замечание только в том, что в QByteArray вы записываете с порядком байт big-endian (вначале старшие байты, потом младшие). Но в x86 процессорах используется little-endian (вначале младшие, потом старшие). Но всё зависит от задачи... если это будет записываться в файл или передаваться по сети, где требуется именно big-endian, то всё правильно. Можно сделать по другому:
1
|
68 / 68 / 17
Регистрация: 20.01.2015
Сообщений: 347
|
||||||
02.03.2015, 17:43 | 4 | |||||
есть метод
0
|
02.03.2015, 17:43 | |
02.03.2015, 17:43 | |
Помогаю со студенческими работами здесь
4
Как преобразовать QString в QByteArray? Перевод Int/FLoat -> QByteArray -> Int/Float error C2664: Display: невозможно преобразовать параметр 1 из 'int [5]' в 'int" Ошибка error C2440: инициализация: невозможно преобразовать 'int' в 'int []' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |