====== Number parsing ====== ACSUtils provides functions to convert strings to numbers. ===== Bases ===== The parsed numbers can be written in any base from 2 to 36. In bases over 10, letters of the alphabet are used as digits. If a base is not explicitly specified or is set to 0, base prefixes can be used: * ''0x'' – base 16 * ''0o'' – base 8 * ''0b'' – base 2 For example, ''%%"0xFF"%%'' is parsed as 256. If no base prefix is present, base 10 is used by default If a base is specified when parsing the number, base prefixes are **not** supported and their presence is treated as error. ===== Errors ===== The following errors can happen while parsing a number: * ''PARSENUMBER_SUCCESS'' -- no error * ''PARSENUMBER_OVERFLOW'' -- the number is too big to fit into a variable, the result will be either [[constants:INT_MAX]] or [[constants:INT_MIN]]. * ''PARSENUMBER_BADFORMAT'' - the number could not be parsed at all. ===== Simple functions ===== These simply return 0 on error, b: * [[functions:atoi]] * [[functions:atof]] ==== Examples ==== atoi("123") -> 123 atof("123.456") -> 123.456 atoi("abc") -> 0 ===== Complex functions ===== These return error status and result, and allow specifying an arbitrary base: * [[functions:ParseInt]] * [[functions:ParseFixed]] Error statuses are: ==== Examples ==== ParseInt("123", 0); r1 -> PARSENUMBER_SUCCESS r2 -> 123 ParseInt("10", 8); // In base 8 r1 -> PARSENUMBER_SUCCESS r2 -> 8 ParseInt("999999999