On May 19, 9:21 pm, Erik Wikström <Erik-wikst...@telia.comwrote:

On 2008-05-19 20:54, wongjoek...@yahoo.com wrote:
I have a C++ program ( I am not sure if this is the right

place to post this question ), One of the function returns

two unsigned integers which are referred to be TimestampLo

and TimestampHi. Can anyone please help me out how I am

supposed to convert these two integer to an understandable

timestamp. It says also for the TimestampLo variable that

this is the lower 32-bits and for the TimestampHi variable

is the higher 32-bits. What does that mean ?

It means that the two integers are the two halves of one big

(64-bit) integer. TimestampLo contains bits 0-31 or the

timestamp and TimestampHi contains bits 32-63

And how do I construct the timestamp ?

Put them back into a 64-bit integer (probably a long or a long

long on your platform, if you can use the uint64_t type to be

sure). You can use shifting and binary or to create the

original timestamp like this:

uint64_t ts = TimestampHi;

ts = ts << 32;

ts = ts | TimestampLo;

Make sure that the 64-bit variable is unsigned.

Which still only gives you an integral value. What that

integral value means depends on the system, and he really needs

to look at the system documentation for that. (In this case,

the system also contains various functions for manipulating or

converting the original format. The only reason I can think of

for converting to uint64_t is to convert it to a standard

time_t, in which case, you'll have to follow up with a few

additional steps.)

--

James Kanze (GABI Software) email:ja*********@gmail.com

Conseils en informatique orientée objet/

Beratung in objektorientierter Datenverarbeitung

9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34