Название: double to 8 byte - QByteArray Отправлено: max1983 от Февраль 28, 2011, 02:37 Простая задачка.
double в байты. Вот так НЕ работает. Код: double val = 1.1; И так тоже НЕ работает. Код: QByteArray testt(QByteArray::number(val));//Ключи f e g тож результата не дают Каждый раз значения разные но не те что мне надо. (1.1); Название: Re: double to 8 byte - QByteArray Отправлено: Fat-Zer от Февраль 28, 2011, 02:56 Простая задачка. double в байты. double x; char *px = (char*)&x; не? Название: Re: double to 8 byte - QByteArray Отправлено: max1983 от Февраль 28, 2011, 03:20 Код: не? Спасибо Fat-Zer ! Название: Re: double to 8 byte - QByteArray Отправлено: max1983 от Март 04, 2011, 16:01 Такс.. продолжим
Пример Код: double vla; 1.5165465 или 1.52 А вот если 1.5 или 1.50 а 1.0 тем более не пашет. работает при условии когда после точки более 1 цифры и последняя не равняется 0; конечно можно решить проблему топорным способом но хотелось бы правильно. последнее что заметил преобразование с 1.5001 выдало не правильный результат. Название: Re: double to 8 byte - QByteArray Отправлено: Fat-Zer от Март 04, 2011, 16:11 в конструкторе надо размер указывать:
QByteArray Rez(px,8); [added] я соврал... нужно ручками заполнять массив... оба эти метода будут копировать всё до первого 0-го байта... Название: Re: double to 8 byte - QByteArray Отправлено: max1983 от Март 04, 2011, 16:31 в конструкторе надо размер указывать: Опять СПАСИБО.QByteArray Rez(px,8); Все равно ничего не получается. Народ кто может помогите. Цель любое число double в 8 байт которые потом отправляют по сети. На другом конце рассчитано что double будет иметь именно 8 байт Код: double val = BitConverter::ToDouble(data, 36); метод QByteArray Rez(px); иногда создает меньше байт что не приемлемо метод QByteArray Rez(px,8); и предварительно Rez.clear(); или Rez[0]= 0x0; Результата не дает Название: Re: double to 8 byte - QByteArray Отправлено: Fat-Zer от Март 04, 2011, 21:46 Все равно ничего не получается. какие симптомы на этот раз?Народ кто может помогите. Название: Re: double to 8 byte - QByteArray Отправлено: max1983 от Март 04, 2011, 22:32 Код: val = 1.51; если значение val = 1.5 тогда бутесы не выводятся(2 строка снизу) и соответственно не идут дальше. а значение выводится 3 строка снизу в какую сторону копать без понятия. Название: Re: double to 8 byte - QByteArray Отправлено: Fat-Zer от Март 04, 2011, 23:04 если значение val = 1.5 тогда бутесы не выводятся(2 строка снизу) 1) wtf бутесы?и соответственно не идут дальше. а значение выводится 3 строка снизу в какую сторону копать без понятия. 2) само собой не выводятся... вы бы хотя бы в дебагере посмотрели, что в QByteArray содержится: Цитировать 00 00 00 00 00 00 f8 3f вывод видит первый 0 и считает, что это пустая строка. такое подойдёт только для передачи в бинарном виде...так для чего вы это пользовать хотите? Название: Re: double to 8 byte - QByteArray Отправлено: max1983 от Март 04, 2011, 23:12 Цитировать так для чего вы это пользовать хотите? Формируется последовательный пакет байтов и отправляется по сети (серверу)так серверу не приходит даже это Код: 00 00 00 00 00 00 f8 3f Название: Re: double to 8 byte - QByteArray Отправлено: Fat-Zer от Март 04, 2011, 23:19 Формируется последовательный пакет байтов и отправляется по сети (серверу) слабо разбираюсь в сетевых технологиях, но по логике проблема должна быть или в дальнейших преобразованиях данных, или на стороне сервера, или где-то в отправке.так серверу не приходит даже это Название: Re: double to 8 byte - QByteArray Отправлено: max1983 от Март 04, 2011, 23:30 В пакете отправляемом содержаться масса разных значений и все доходит..
эта часть по середине и там 0000 вставляю данные так (как и все прочее) datagram.insert(36,doubleTo8Byte(doblevalue)); doubleTo8Byte() - это и есть проблемная функция.(inline) никакого ввода вывода не использую, datagram тоже QByteArray Название: Re: double to 8 byte - QByteArray Отправлено: Fat-Zer от Март 04, 2011, 23:58 datagram.insert(36,doubleTo8Byte(doblevalue)); мда... теже яица, что и с созданием были... insert копирует до 1-го \0. да и нафиг тут целая функция... всё же в одну строчку пишется!datagram.insert(36, (char*)&doblevalue, sizeof(doblevalue)); // подразумевается, что doblevalue имеет тип double Название: Re: double to 8 byte - QByteArray Отправлено: max1983 от Март 05, 2011, 00:04 Проблема решена
надо было возвращать объект QByteArray а не набор байтов от QByteArray::data() в отдельной функции сделал так как Код: char *px = (char*)&x; |