X-Git-Url: http://sigaev.ru/git/gitweb.cgi?a=blobdiff_plain;f=tools.c;h=07c0e46847e38255c8362f57ce5bcfe2fc02faba;hb=bc1341fcd04288e65a7ef44db4f20ecaed85ab3e;hp=a6c02065be43d5ef60ee7d2b5929575bf8b3f977;hpb=9350eabf4bf1fa81129c2add01872b79398e6694;p=tedtools.git diff --git a/tools.c b/tools.c index a6c0206..07c0e46 100644 --- a/tools.c +++ b/tools.c @@ -71,7 +71,23 @@ strtox(char *src, char **end) { return res; } -static char buf[10]; +u_int64_t +strtox64(char *src, char **end) { + u_int32_t res=0, i=0; + + while(src && *src && isXdigit(*src) && i<16) { + res = res << 4; + res |= str2hex[ *(unsigned char*)src ]; + src++; + i++; + } + + if ( end ) + *end=src; + return res; +} + +static char buf[32]; static char hex2str[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char* @@ -89,6 +105,21 @@ xtostr(u_int32_t x) { return buf; } +char* +x64tostr(u_int64_t x) { + char *ptr=buf; + int i,wast=0; + for(i=60;i>=0;i-=4) { + *ptr = hex2str[ (x>>i) & 0x0f ]; + if ( wast || *ptr!='0' || i==0 ) { + ptr++; + wast=1; + } + } + *ptr='\0'; + return buf; +} + double timediff(struct timeval *begin, struct timeval *end) { return ((double)( end->tv_sec - begin->tv_sec )) + ( (double)( end->tv_usec-begin->tv_usec ) ) / 1.0e+6;