In our code, we have a 16-byte packed struct that we call “ISOTIME”:
typedef struct isotime {
struct {
uint16_t iso_zone : 12; // corresponding time zone
uint16_t iso_type : 4; // type of iso date
} iso_fmt;
int16_t iso_year; // year
uint8_t iso_month; // month
uint8_t iso_day; // day
uint8_t iso_hour; // hour
uint8_t iso_minute; // minute
uint8_t iso_second; // second
uint8_t iso_centi; // centi-second
uint8_t iso_hundred; // hundreds of micro-seconds
uint8_t iso_micro; // micro-seconds
uint32_t iso_unused; // pad out to 16 bytes
} ISOTIME;
I’m trying to figure out what standard that this is supposed to be implementing. Anyone have a clue? My Google-fu is failing me.
International standards rarely concern themselves with detailed in-memory representations of data , particularly at the bit level (exceptions of course for floating point standards). This is because such things are inherently unportable. That’s not to say that there is no standard for this structure, but I think it unlikely.