ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


number_parsing

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
number_parsing [2017/03/21 16:05] – created korshunnumber_parsing [2017/03/21 16:28] (current) korshun
Line 2: Line 2:
 ACSUtils provides functions to convert strings to numbers. ACSUtils provides functions to convert strings to numbers.
  
-Simple functions that simply return 0 on error:+===== 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:atoi]]
   * [[functions:atof]]   * [[functions:atof]]
  
-Complex functions:+==== Examples ==== 
 + 
 +<code> 
 +atoi("123") -> 123 
 +atof("123.456") -> 123.456 
 +atoi("abc") -> 0 
 +</code> 
 + 
 +===== Complex functions ===== 
 +These return error status and result, and allow specifying an arbitrary base:
   * [[functions:ParseInt]]   * [[functions:ParseInt]]
   * [[functions:ParseFixed]]   * [[functions:ParseFixed]]
  
 +Error statuses are:
 +  
 +==== Examples ====
 +<code>
 +ParseInt("123", 0);
 +r1 -> PARSENUMBER_SUCCESS
 +r2 -> 123
 +
 +ParseInt("10", 8); // In base 8
 +r1 -> PARSENUMBER_SUCCESS
 +r2 -> 8
  
 +ParseInt("999999999
number_parsing.1490105102.txt.gz · Last modified: 2017/03/21 16:05 by korshun