gpt4 book ai didi

c++ - 如何将自定义时间 "ticks"转换为 TDateTime?

转载 作者:行者123 更新时间:2023-11-28 02:11:39 24 4
gpt4 key购买 nike

(如果这很重要,我使用的是 C++Builder 2006)

我无法解决这个问题:

我有什么(我不能改变这个):

typedef struct {
uint16_t Leaps; // How many Leaps from the previous event (see below)
uint16_t Ticks; // Event "machine ticks" (see below)
uint16_t Code;
} sMachineEvents;

typedef struct {
TDateTime Date;
uint16_t Code;
} sConvertEvents;

TDateTime Sync // Contains the date and time of Ev1
TICKS_PER_SECOND // #defined elsewhere: How many Ticks in a second
TICKS_PER_LEAP // #defined elsewhere: How many ticks to make a "Leap"
// (this means that when the Tick counter reaches TICKS_PER_LEAP
// it becomes 0 and the Leaps counter increases by 1)


sMachineEvents Ev[3];
sConvertEvents cEv[3];

Ev[0].Leaps = 0x0005;
Ev[0].Ticks = 0x5975;
Ev[0].Code = 0x0001;

Ev[1].Leaps = 0x0001;
Ev[1].Ticks = 0x0124;
Ev[1].Code = 0x0002;

Ev[2].Leaps = 0x0000;
Ev[2].Ticks = 0x70AC;
Ev[2].Code = 0x0003;

我需要在“ConvertEvents”中“转换”这些“MachineEvents”。第一个很简单:

cEv[0].Date = Sync;
cEv[0].Code = Ev[0].Code;

现在:Ev[1] 发生在 Ev[0] 之前。

多少钱?我需要在 Ev[0].Leaps+Ev[0].Ticks 之前“回到过去”,然后在 Ev[1].Ticks 之前“回到过去”。

Ev[2] 是一样的:它发生了

Ev[1].Leaps + Ev[1].Ticks - Ev[2].Ticks

在 Ev[1] 之前......

我应该如何计算 Ev[1] 和 Ev[2] 的日期时间?

最佳答案

TDateTime实际上是一个代表天数的浮点值;一小时由 1.0/24.0 表示,一秒由 1.0/SecsPerDay 表示(SecsPerDay 是一个常数,等于 60 * 60 * 24 = 86400).

因此,如果一个刻度为 1.0/TICKS_PER_SECOND 秒:

TDateTime TimeAsTDateTime = TimeInTicks / (SecsPerDay * TICKS_PER_SECOND)

此外,我认为您的代码不正确:据我所知您需要使用 Ev[0].Leaps+Ev[0].Ticks 而不是 Ev [0].Leaps * TICKS_PER_LEAP + Ev[0].Ticks.

关于c++ - 如何将自定义时间 "ticks"转换为 TDateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35478592/

24 4 0
文章推荐: javascript - 菜单中的 GridView
文章推荐: javascript: Triple > - 是什么意思
文章推荐: javascript - Firefox 21 和 Ember.js 不工作
文章推荐: html - 我如何才能在我的网站中绝对定位包含带有 标签的 youtube 视频的 div?