#include "stdafx.h"
#include <stdio.h>
#include "math.h"
#define _WORDSIZE 32
#define _TEST 0
#if _WORDSIZE == 64
typedef unsigned long int UINT64;
#else
typedef unsigned long long int UINT64;
#endif
#define MINSIZE 0
const UINT64 MAXSIZE = (UINT64)1<<60;
char * ptr[]={"B","KB","MB","GB","TB"};
int getSizeUnit(UINT64 size)
{
int ret;
double dbsize;
dbsize = size;
ret = log(dbsize)/log((double)1024);
return ret;
}
void printSize(UINT64 size)
{
unsigned int unit;
unsigned int key;
if((size < MINSIZE) || (size > MAXSIZE))
{
printf("unkown size\r\n");
return;
}
unit = getSizeUnit(size);
key = size>>(10*unit);
printf("size is %d %s\r\n",key,ptr[unit]);
}
int _tmain(int argc, _TCHAR* argv[])
{
#if _TEST
int a[10]={0,1,2};
printf("size of int is %lld\r\n", MAXSIZE );
printf("size of double is %lld\r\n", sizeof(double) );
printf("size of long double is %lld\r\n", sizeof(long double) );
printf("getSizeUnit is %d\r\n", getSizeUnit(800));
printf("%s\r\n",ptr[1]);
printf("%d,%d,%d\n",*a,*(a+1),sizeof(ptr));
#endif
printSize(1234567890);
return 0;
}
转载于:https://my.oschina.net/u/2245760/blog/322616