// // Created by YY on 2020/1/7. // #include "xconvert.h" #include #include #include #include using namespace std; #define SECONDS_PER_MINUTE 60 #define SECONDS_PER_HOUR 3600 #define SECONDS_PER_DAY (86400L) #define MINUTES_PER_HOUR 60 #define MINUTES_PER_DAY 1440 #define HOURS_PER_DAY 24 #define DAYS_PER_WEEK 7 #define DAYS_PER_YEAR 365 double ConvertKMh2Ms(int kmh) { return ((double)kmh) * 1000.0 / 3600.0; } double ConvertMs2KMh(double ms) { return ms * 3600.0 / 1000.0; } void ConvertPhoneNum(uint8_t *dst, int length, const char *src) { int p = length - 1; int q = strlen(src) - 1; memset(dst, 0, length); while (q >= 0) { dst[p] = src[q] - '0'; q--; if (q >= 0) { dst[p] |= (src[q] - '0')<<4; p--; q--; } } } void ConvertHex2String(char *str, const uint8_t *hex, int length) { const char HEX[] = "0123456789ABCDEF"; int j = 0; for (int i = 0; i < length; ++i) { str[j++] = HEX[(hex[i]>>4)&0x0F]; str[j++] = HEX[hex[i]&0x0F]; } str[j++] = 0; } void ConvertString2Hex(uint8_t *hex, int length, const char *str) { if (length < strlen(str)/2) return; for (int i = 0, j = 0; i < strlen(str); ++i, ++j) { if (str[i] >= '0' && str[i] <= '9') { hex[j] = str[i] - '0'; } else if (str[i] >= 'A' && str[i] <= 'F') { hex[j] = 10 + str[i] - 'A'; } else if (str[i] >= 'a' && str[i] <= 'f') { hex[j] = 10 + str[i] - 'a'; } hex[j] <<= 4; i++; if (str[i] >= '0' && str[i] <= '9') { hex[j] |= str[i] - '0'; } else if (str[i] >= 'A' && str[i] <= 'F') { hex[j] |= 10 + str[i] - 'A'; } else if (str[i] >= 'a' && str[i] <= 'f') { hex[j] |= 10 + str[i] - 'a'; } } } const int LibTimeDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; static inline bool TimeYearIsLeap(int year) { if ((year % 4) || year == 2100) return false; else return true; } uint32_t TimeMakeComposite(int year, int month, int day, int hour, int minute, int second) { int i; uint32_t totalSeconds; int daysThisYear; totalSeconds = second; totalSeconds += minute*SECONDS_PER_MINUTE; totalSeconds += hour*SECONDS_PER_HOUR; daysThisYear = day - 1; if (TimeYearIsLeap(year) && month>2) daysThisYear += 1; for (i = 0; i<(month - 1); i++) daysThisYear += (int)LibTimeDays[i]; for (i = 2000; i split(string str, string pattern) { string::size_type pos; vector result; str += pattern; int size=str.size(); for(int i=0; i