?basex(249272136572 , "0123456789abcdef") ?basex(-77442022681, "0123456789abcdef") Function BaseX( txVal, tcDom ) * Converts a number to a string representation of that number * tnVal - Number * tcDom - The domain of characters to be used * typical Domains are: * "01" - Binary * "0123456789" - Decimal * "0123456789abcdef" - Hex * "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" - Base62 * "23456789ABCDEFGHJKLMNPRSTUVWXYZ" - No {01IOQ} - they might confuse a user. * If you want the result padded, use PADL() Local ; lnVal, ; lnDomSiz, ; lcRet, ; lnPosition, ; lnPlace If Vartype(txVal) = "N" If txVal < 0 Then txVal = txVal + 1 Endif lnVal = txVal lnDomSiz = Len(tcDom) * Humans get restless if the value zero is displayed as an empty string (blank). * The first char of the domain (generally 0) is normally used as a place holder, * but in the case of the value zero, it fills in to keep the peace. * This may have lead to the fall of Rome. If lnVal = 0 lcRet = Substr( tcDom, 1, 1 ) Else lcRet = '' Do While lnVal <> 0 lnDig = lnVal % lnDomSiz lnVal = Int( lnVal/lnDomSiz ) If txVal > 0 Then lcDig = Substr( tcDom, lnDig+1, 1 ) Else If lnDig = 0 Then lnDig = 16 Endif lcDig = Substr( tcDom, lnDig, 1 ) Endif lcRet = lcDig + lcRet Enddo Endif lxRet=lcRet Else * Convert it back to decimal lnVal = 0 lnPlace = 0 For lnPosition = Len(txVal) To 1 Step -1 lnVal = lnVal + (At( Substr(txVal,lnPosition,1), tcDom)-1) * (Len(tcDom)^lnPlace) lnPlace=lnPlace+1 Endfor lxRet = lnVal Endif Return lxRet EndfuncCarlos Alloatti