// Common/IntToString.cpp #include "StdAfx.h" #include "IntToString.h" #define CONVERT_INT_TO_STR(charType, tempSize) \ unsigned char temp[tempSize]; unsigned i = 0; \ while (val >= 10) { temp[i++] = (unsigned char)('0' + (unsigned)(val % 10)); val /= 10; } \ *s++ = (charType)('0' + (unsigned)val); \ while (i != 0) { i--; *s++ = temp[i]; } \ *s = 0; void ConvertUInt32ToString(UInt32 val, char *s) throw() { CONVERT_INT_TO_STR(char, 16); } void ConvertUInt64ToString(UInt64 val, char *s) throw() { if (val <= (UInt32)0xFFFFFFFF) { ConvertUInt32ToString((UInt32)val, s); return; } CONVERT_INT_TO_STR(char, 24); } void ConvertUInt64ToOct(UInt64 val, char *s) throw() { UInt64 v = val; unsigned i; for (i = 1;; i++) { v >>= 3; if (v == 0) break; } s[i] = 0; do { unsigned t = (unsigned)(val & 0x7); val >>= 3; s[--i] = (char)('0' + t); } while (i); } void ConvertUInt32ToHex(UInt32 val, char *s) throw() { UInt32 v = val; unsigned i; for (i = 1;; i++) { v >>= 4; if (v == 0) break; } s[i] = 0; do { unsigned t = (unsigned)((val & 0xF)); val >>= 4; s[--i] = (char)((t < 10) ? ('0' + t) : ('A' + (t - 10))); } while (i); } void ConvertUInt64ToHex(UInt64 val, char *s) throw() { UInt64 v = val; unsigned i; for (i = 1;; i++) { v >>= 4; if (v == 0) break; } s[i] = 0; do { unsigned t = (unsigned)((val & 0xF)); val >>= 4; s[--i] = (char)((t < 10) ? ('0' + t) : ('A' + (t - 10))); } while (i); } void ConvertUInt32ToHex8Digits(UInt32 val, char *s) throw() { s[8] = 0; for (int i = 7; i >= 0; i--) { unsigned t = val & 0xF; val >>= 4; s[i] = (char)(((t < 10) ? ('0' + t) : ('A' + (t - 10)))); } } /* void ConvertUInt32ToHex8Digits(UInt32 val, wchar_t *s) { s[8] = 0; for (int i = 7; i >= 0; i--) { unsigned t = val & 0xF; val >>= 4; s[i] = (wchar_t)(((t < 10) ? ('0' + t) : ('A' + (t - 10)))); } } */ void ConvertUInt32ToString(UInt32 val, wchar_t *s) throw() { CONVERT_INT_TO_STR(wchar_t, 16); } void ConvertUInt64ToString(UInt64 val, wchar_t *s) throw() { if (val <= (UInt32)0xFFFFFFFF) { ConvertUInt32ToString((UInt32)val, s); return; } CONVERT_INT_TO_STR(wchar_t, 24); } void ConvertInt64ToString(Int64 val, char *s) throw() { if (val < 0) { *s++ = '-'; val = -val; } ConvertUInt64ToString(val, s); } void ConvertInt64ToString(Int64 val, wchar_t *s) throw() { if (val < 0) { *s++ = L'-'; val = -val; } ConvertUInt64ToString(val, s); }