handmade.network » Forums » How to represent an integer as a char* (aka string)
mindspyke
9 posts
#16090 How to represent an integer as a char* (aka string)
2 months, 2 weeks ago Edited by mindspyke on Aug. 25, 2018, 1:30 p.m.

Hi I'm working on text rendering for my game and I was wondering.. how can I represent any given signed 32 bit integer as a series of ASCII characters?

People online seem to recommend sprintf but I'm curious as to how I could code this myself.

Any suggestions?

Thx
joe513
27 posts
#16091 How to represent an integer as a char* (aka string)
2 months, 2 weeks ago Edited by joe513 on Aug. 25, 2018, 2:45 p.m.

Take a look here to get you started.
https://www.geeksforgeeks.org/implement-itoa/

Code below is from the link above.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Implementation of itoa()
char* itoa(int num, char* str, int base)
{
    int i = 0;
    bool isNegative = false;
 
    /* Handle 0 explicitely, otherwise empty string is printed for 0 */
    if (num == 0)
    {
        str[i++] = '0';
        str[i] = '\0';
        return str;
    }
 
    // In standard itoa(), negative numbers are handled only with 
    // base 10. Otherwise numbers are considered unsigned.
    if (num < 0 && base == 10)
    {
        isNegative = true;
        num = -num;
    }
 
    // Process individual digits
    while (num != 0)
    {
        int rem = num % base;
        str[i++] = (rem > 9)? (rem-10) + 'a' : rem + '0';
        num = num/base;
    }
 
    // If number is negative, append '-'
    if (isNegative)
        str[i++] = '-';
 
    str[i] = '\0'; // Append string terminator
 
    // Reverse the string
    reverse(str, i);
 
    return str;
}