85 lines
2.0 KiB
C++
85 lines
2.0 KiB
C++
#include "global.h"
|
|
|
|
|
|
#ifdef _WIN32
|
|
#include "../system/windows_include.h"
|
|
#else
|
|
#include <sys/time.h>
|
|
#endif
|
|
#include <float.h>
|
|
#include <stdlib.h>
|
|
|
|
IUINT16 rand_range_16(IUINT16 min, IUINT16 max) {
|
|
if (min > max) {
|
|
// 如果参数传反了,交换
|
|
IUINT16 temp = min;
|
|
min = max;
|
|
max = temp;
|
|
}
|
|
return min + rand() % (max - min + 1);
|
|
}
|
|
|
|
void itimeofday(long *sec, long *usec)
|
|
{
|
|
#if defined(__unix)
|
|
struct timeval time;
|
|
gettimeofday(&time, NULL);
|
|
if (sec) *sec = time.tv_sec;
|
|
if (usec) *usec = time.tv_usec;
|
|
#else
|
|
static long mode = 0, addsec = 0;
|
|
BOOL retval;
|
|
static IINT64 freq = 1;
|
|
IINT64 qpc;
|
|
if (mode == 0) {
|
|
retval = QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
|
|
freq = (freq == 0)? 1 : freq;
|
|
retval = QueryPerformanceCounter((LARGE_INTEGER*)&qpc);
|
|
addsec = (long)time(NULL);
|
|
addsec = addsec - (long)((qpc / freq) & 0x7fffffff);
|
|
mode = 1;
|
|
}
|
|
retval = QueryPerformanceCounter((LARGE_INTEGER*)&qpc);
|
|
retval = retval * 2;
|
|
if (sec) *sec = (long)(qpc / freq) + addsec;
|
|
if (usec) *usec = (long)((qpc % freq) * 1000000 / freq);
|
|
#endif
|
|
}
|
|
|
|
/* get clock in millisecond 64 */
|
|
IINT64 iclock64(void)
|
|
{
|
|
long s, u;
|
|
IINT64 value;
|
|
itimeofday(&s, &u);
|
|
value = ((IINT64)s) * 1000 + (u / 1000);
|
|
return value;
|
|
}
|
|
|
|
IUINT32 iclock()
|
|
{
|
|
return (IUINT32)(iclock64() & 0xfffffffful);
|
|
}
|
|
|
|
int check_cycle_0_9(const char *str, int len) {
|
|
if (len <= 0) return false;
|
|
|
|
for (int i = 1; i < len; i++) {
|
|
// 上一个字符
|
|
char prev = str[i - 1];
|
|
char expected = (prev == '9') ? '0' : prev + 1;
|
|
|
|
if (str[i] != expected) {
|
|
return i;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
void print_hex(const char* prefix, const uint8_t* data, int len, const char* suffix) {
|
|
printf("%s", prefix);
|
|
for (int i = 0; i < len; ++i) {
|
|
printf("%02X ", data[i]); // %02X: 打印两位十六进制数,前面补零,X为大写字母
|
|
}
|
|
printf("%s", suffix);
|
|
}
|