I would like to know how to convert 64 bit long Data Type to any of the 16 bit Data Types. This feature is required in the Ethernet Application to include the Time Stamp. Only 2 Bytes ( 16 bits ) are available to include the Time Stamp. But we are getting 64 bit long as the Time Stamp value from Win API. So a conversion from 64 bit data type to to 16 bit data type is essential.
I would like to know how to convert 64 bit long Data Type to
Share
Well, you can’t fit 64 bits of information into 16 bits of storage without losing some of the information.
So it’s up to you how to quantize or truncate the timestamp. E.g. suppose you get the timestamp in nanosecond precision, but you only need to store it at seconds precision. In that case you divide the 64 bit number by 1000000000 and are left with the seconds. Then it might fit into 16 bits or not (16 bits would only store up to 65535 seconds).
If it won’t fit, then you’ll have the timestamp wrapping around periodically. Which, again, might be a problem in your case or it might be not a problem.
In any case, if you need to interface an existing library that requires timestamps – figure out what it needs in that timestamp (clock ticks? seconds? years?). Then figure out what the Windows times function that you’re using returns. Then convert the Windows time unit into the-library-that-you-use time unit.