crossplatform.ru

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


  Ответ в Прочитать строки в utf8 из бинарного файла
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
iddqd Дата 28.7.2010, 20:33
 
Цитата(BRE @ 28.7.2010, 21:28) *


Ясно. Просто уведомлений никаких не приходило... В таком случае продолжим обсуждение там.
BRE Дата 28.7.2010, 20:28
 
Цитата(iddqd @ 28.7.2010, 19:53) *
Видимо из-за произошедшего сбоя потерялась часть сообщений в теме.

Тему разделили: http://www.forum.crossplatform.ru/index.ph...=5286&st=10

Цитата(iddqd @ 28.7.2010, 19:53) *
Дата должна получиться следующая - 06.02.1960

А не 16.02.1960?
Хотя, возможно, нужно учитывать погрешность на продолжительность солнечных суток.
iddqd Дата 28.7.2010, 18:53
  Видимо из-за произошедшего сбоя потерялась часть сообщений в теме. Я попытался восстановить по имеющимся уведомлениям об ответах:

maint
Цитата
Цитата
Цитата(iddqd @ 20.7.2010, 15:36) Есть дата, хранящаяся в микросекундах в виде int64.
Как правильнее и быстрее преобразовать её в QDate/QDateTime ?
Пробовал QDateTime::addMSecs(), не это не то, так как результат в дебаггере показывает 1531 год :blink:

по моему так
void QDateTime::setTime_t ( uint seconds )
Sets the date and time given the number of seconds that have passed since 1970-01-01T00:00:00, Coordinated Universal Time (Qt::UTC). On systems that do not support time zones this function will behave as if local time were Qt::UTC.



Litkevich Yuriy
Цитата
iddqd, возможно дата в Unix-формате, тогда используй:
http://doc.crossplatform.ru/qt/4.5.0/qdate...html#fromTime_t (QDateTime QDateTime::fromTime_t ( uint seconds ) [static])
ну а из него уже получишь только дату


iddqd
Цитата
Дата может быть как до 1970, так и после 1970 года.


SABROG
Цитата
Цитата
Цитата(iddqd @ 21.7.2010, 17:01)
SABROG, год должен получиться 1960-й

Правильно, чуток не верно посчитал:

61855747200000000 / 1000 = 61855747200000 // переводим в миллисекунды
61855747200000 / 1000 = 61855747200 // переводим в секунды

365.2424 * 24 * 60 * 60 = 31556943.36 // вычисляем количество секунд в году Грегорианского календаря

61855747200 / 31556943.36 = 1960.1 // получаем количество лет
4,13821440 - остаток 4 секунды.

То есть судя по маленькому остатку у тебя в базе почти ровная дата 01-01-1960 00:00:04


---

Дата должна получиться следующая - 06.02.1960
Вопрос остаётся открытым, декодировать так и не получилось пока что...
Алексей1153 Дата 18.7.2010, 17:41
  DEADHUNT, для меня это одно и то же. Кстати, ещё ни разу не приходилось std::string применять :)

А в этом примере я условился, что принимается по ссылке именно вектор.

Это вообще дело вкуса и граблей за плечами (так как я немного рассеянный, я всячески себя подстраховываю)
DEADHUNT Дата 18.7.2010, 16:40
 
Цитата(Алексей1153 @ 18.7.2010, 16:58) *
std::vector<char> label(labelLen+1,0);
in.readRawData(label);//функция принимает вектор по ссылке, к примеру
//понадеялись на совесть функции//label[label.size()-1] = '\0';
out << &label[0] << "\n";//программа сдохла

то есть readRawData считает >= labelLen+1? вообще здесь лучше просто string использовать.
Алексей1153 Дата 18.7.2010, 15:58
  DEADHUNT, тут код очень маленький и запутаться просто негде. Но, что бы там не было наколбашено, обеспечиваем, что строка заканчивается на zero-terminator. Вот другой пример:

std::vector<char> label(labelLen+1,0);
in.readRawData(label);//функция принимает вектор по ссылке, к примеру
//понадеялись на совесть функции//label[label.size()-1] = '\0';
out << &label[0] << "\n";//программа сдохла

DEADHUNT Дата 18.7.2010, 15:11
 
Цитата(Алексей1153 @ 18.7.2010, 15:54) *
DEADHUNT, зато надёжно. А на скорости это не скажется

что значит надёжно, ты считаешь тот код не детерминированным? при конструировании вектора ты задаёшь его длину и начальные значения.
Алексей1153 Дата 18.7.2010, 14:54
  DEADHUNT, зато надёжно. А на скорости это не скажется
DEADHUNT Дата 18.7.2010, 11:21
 
Цитата(Алексей1153 @ 18.7.2010, 7:00) *
label[label.size()-1] = '\0';

бесполезно, т. к. ты уже инициализировал вектор нулями.
Алексей1153 Дата 18.7.2010, 6:00
  а лучше так
std::vector<char> label(labelLen+1,0);
in.readRawData(&label[0],label.size()-1);
label[label.size()-1] = '\0';

out << &label[0] << "\n";


и не забудешь delete вызвать
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 12.7.2025, 6:02