Tempo trascorso tra due timestamp a 8 bit

0

Quindi ho una serie di numeri che rappresentano alcuni tempi. Ecco come appaiono:

[sec]   [msec]

 100    75
 100    200
 101    60
 101    233
 102    255
 104    21

La prima colonna contiene i secondi trascorsi e la seconda i millisecondi trascorsi. I valori sono rappresentati usando 8 bit (quindi se il numero ms è più grande di 255 , il sec viene incrementato) .

Ora quello che voglio fare è calcolare il tempo trascorso (in millisecondi) tra due valori di inteframing.

Quello che sono riuscito a fare è questo:

First interframe:   200 - 75                = 125ms.
Second interframe:  (1 * 255 + 60) - 200    = 115ms.
Third interframe:   233 - 60                = 173ms.
Forth interframe:   (1 * 255 + 255) - 233   = 277ms.
Fifth interframe:   (2 * 255 + 21) - 255    = 276ms.

Ma questo metodo è piuttosto difficile da implementare ...

C'è qualche altro metodo per trovare il tempo trascorso (in millisecondi) usando un altro metodo?

    
posta Marius Marusanici 15.12.2015 - 14:34
fonte

1 risposta

2

Supponendo che stiamo parlando di 1/256 ° di secondo (chiamiamoli umoristicamente bittisecondi), e non di millisecondi, potresti semplicemente convertire due valori nella loro rappresentazione bittiseconda, e poi fare una sottrazione diretta.

int ToBittiseconds(byte seconds, byte bittiseconds)
{
    return seconds * 256 + bittiseconds;
}

byte v1Seconds = 100;
byte v1Bittis = 200;

byte v2Seconds = 101;
byte v2Bittis = 60;

int difference = ToBittiseconds(v2Seconds, v2Bittis) - ToBittiseconds(v1Seconds, v1Bittis);
    
risposta data 15.12.2015 - 15:09
fonte

Leggi altre domande sui tag