String FormatProgress(__int64 cb, __int64 total) { __int64 n=total; int pw=0; __int64 div=1; while (n > 999999) { div*=1024; n/=1024; pw++; } String un; switch (pw) { case 0: un=LOC("Engine.Bytes"); break; case 1: un=LOC("Engine.Kb"); break; case 2: un=LOC("Engine.Mb"); break; case 3: un=LOC("Engine.Gb"); break; case 4: un=LOC("Engine.Tb"); break; case 5: un=LOC("Engine.Pb"); break; } return Format(L"%s %s %s %s [%d%%]", FormatNum(cb/div).ptr(), LOC("Engine.Of").ptr(), FormatNum(total/div).ptr(), un.ptr(), (int)(total?(float)cb/total*100:0)); }
int main( int argc, char **argv ) { int i; unsigned num; char str[20]; for ( i = 1; i < argc; i++ ) { num = strtoul( argv[i], NULL, 0 ); FormatNum( num, str, sizeof( str )); printf( "%9d %10s\n", num, str ); } exit( 0 ); return 0; }
String FormatValue(__int64 Value) { int pw = 0; __int64 div = 1; while (Value >= 100000) { div *= 1024; Value /= 1024; pw++; } String UnitStr; switch (pw) { case 0: UnitStr = LOC("Engine.Bytes"); break; case 1: UnitStr = LOC("Engine.Kb"); break; case 2: UnitStr = LOC("Engine.Mb"); break; case 3: UnitStr = LOC("Engine.Gb"); break; case 4: UnitStr = LOC("Engine.Tb"); break; case 5: UnitStr = LOC("Engine.Pb"); break; } return Format(L"%s %s", FormatNum(Value).ptr(), UnitStr.ptr()); }
String FormatSpeed(__int64 cb) { __int64 n=cb; int pw=0; __int64 div=1; while (n>=100000) { div*=1024; n/=1024; pw++; } String un; switch (pw) { case 0: un=LOC("Engine.Bytes"); break; case 1: un=LOC("Engine.Kb"); break; case 2: un=LOC("Engine.Mb"); break; case 3: un=LOC("Engine.Gb"); break; case 4: un=LOC("Engine.Tb"); break; case 5: un=LOC("Engine.Pb"); break; } return Format(L"%s %s/%s", FormatNum(cb/div).ptr(), un.ptr(), LOC("Engine.Sec").ptr()); }