private string FormatHexadecimal (int precision)
{
int size = Math.Max (precision, _decPointPos);
#if UNSAFE_TABLES
char* digits = _specifierIsUpper ? DigitUpperTable : DigitLowerTable;
#else
char[] digits = _specifierIsUpper ? DigitUpperTable : DigitLowerTable;
#endif
ResetCharBuf (size);
_ind = size;
ulong val = _val1 | ((ulong)_val2 << 32);
while (size > 0) {
_cbuf [--size] = digits [val & 0xf];
val >>= 4;
}
return new string (_cbuf, 0, _ind);
}