Обработка значения TimeSpan (языка C#) в C++

133
06 марта 2019, 04:20

Задача: В приложении, написанном на C#, вводится значение времени в интервале [00:00:00, 24:00:00) и заносится в переменную типа TimeSpan. Затем это значение должно передаться по сети и правильно прочитаться приложением, написанным на С++.

Вопрос 1: В каком виде передавать TimeSpan? (У меня оно пока что передается как double TimeSpan.TotalHours).

Вопрос 2: Как и с помощью каких средств прочитать это значение на C++?

P.S. В языке C++ я чайник.

UPD. Еще есть идея передавать отдельно часы минуты и секунды.

Answer 1

Передавать можно как угодно, главное, чтобы на приёмной стороне можно было восстановить исходное значение. Можно хоть double, представляющий кол-во часов, но проще всего это сделать, оперируя целыми int (или даже uint) числами, так меньше шансов нарваться на какие-то ошибки округления и прочие проблемы несовместимости представлений чисел с плавающей точкой (хотя в большинстве своём всё равно везде опираются на IEEE-754).

Если временной интервал преобразован в целое число, которое соответствует кол-ву секунд (если нужна большая точность, например, миллисекунды, целый тип можно расширить), то после перевода, соблюдения порядка байт и передачи по сети на приёмной (C++) стороне можно написать нечто подобное (в предположении, что число разместили в 32-разрядный unsigned int):

#include <cstdint>
std::uint32_t sec = 0;
if (sizeof(sec) != recv(sockfd, &sec, sizeof(sec), 0))
{
     // в sec получено кол-во секунд 
}

В качестве альтернативного варианта, который будет исключать влияние порядка байт, можно предложить передачу интервала как строки, например "12:34:56". Правда в таком случае размер передаваемых данных возрастёт, однако, принять и передать такую строку будет проще между различными архитектурами, которые могут участвовать в обмене по сете.

READ ALSO
Как вывести уведомления в админке, при сохранении страницы wordpress?

Как вывести уведомления в админке, при сохранении страницы wordpress?

Необходимо вывести сообщение в админке wordpress при сохранении страницы, нашел отличный пример класса, но не могу заставить его работать, вот...

149
Почему выводятся оба значения в IF !empty?

Почему выводятся оба значения в IF !empty?

Создал дополнительное поле в Wordpress через плагин ACFВ archive

148
Laravel условие в маршрутах (Routes)

Laravel условие в маршрутах (Routes)

У меня есть маршруты (пример):

153