<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dsignt.de/support-wiki/index.php?action=history&amp;feed=atom&amp;title=Integer_to_ASCII</id>
	<title>Integer to ASCII - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://dsignt.de/support-wiki/index.php?action=history&amp;feed=atom&amp;title=Integer_to_ASCII"/>
	<link rel="alternate" type="text/html" href="https://dsignt.de/support-wiki/index.php?title=Integer_to_ASCII&amp;action=history"/>
	<updated>2026-08-14T20:34:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://dsignt.de/support-wiki/index.php?title=Integer_to_ASCII&amp;diff=622&amp;oldid=prev</id>
		<title>Root at 14:02, 15 December 2011</title>
		<link rel="alternate" type="text/html" href="https://dsignt.de/support-wiki/index.php?title=Integer_to_ASCII&amp;diff=622&amp;oldid=prev"/>
		<updated>2011-12-15T14:02:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:02, 15 December 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l245&quot;&gt;Line 245:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 245:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  [[category:DSP]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  [[category:DSP&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]][[category:Software&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Root</name></author>
	</entry>
	<entry>
		<id>https://dsignt.de/support-wiki/index.php?title=Integer_to_ASCII&amp;diff=462&amp;oldid=prev</id>
		<title>WikiImporter: Pushed from DSignT Issue Database.</title>
		<link rel="alternate" type="text/html" href="https://dsignt.de/support-wiki/index.php?title=Integer_to_ASCII&amp;diff=462&amp;oldid=prev"/>
		<updated>2011-03-02T12:49:33Z</updated>

		<summary type="html">&lt;p&gt;Pushed from DSignT Issue Database.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== Integer - ASCII conversions without stdio ===&lt;br /&gt;
&lt;br /&gt;
==== Integer to ASCII (decimal and hexadecimal output) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/***********************************************************************&lt;br /&gt;
 @brief	    convert an integer number to a decimal or hex string&lt;br /&gt;
&lt;br /&gt;
 @param     dst - pointer to string&lt;br /&gt;
 @param	    val - value to convert&lt;br /&gt;
 @param     digits - number of decimal digits, negative value = hex format&lt;br /&gt;
 @return    pointer to string&lt;br /&gt;
&lt;br /&gt;
 @note      max value: 32-bit&lt;br /&gt;
 @note 	    no terminating zero is added &lt;br /&gt;
 @note      dst buffer must be large enough to hold the requested number&lt;br /&gt;
            of digits +2 for hex, +1 for decimal format&lt;br /&gt;
***********************************************************************/&lt;br /&gt;
char *itoa (char *dst, int64_t val, int8_t digits)&lt;br /&gt;
{&lt;br /&gt;
    /*******************************************************************&lt;br /&gt;
      locals&lt;br /&gt;
    *******************************************************************/&lt;br /&gt;
    char *p_str = dst;&lt;br /&gt;
    uint32_t u, tmp;&lt;br /&gt;
    int32_t sign, i;&lt;br /&gt;
    int8_t hex = 0;&lt;br /&gt;
&lt;br /&gt;
    /*******************************************************************&lt;br /&gt;
      format:&lt;br /&gt;
        hex: add leading 0x&lt;br /&gt;
 	dec: add leading sign&lt;br /&gt;
    *******************************************************************/&lt;br /&gt;
    if (digits &amp;lt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        hex = 1;&lt;br /&gt;
        digits = -digits;&lt;br /&gt;
        *p_str++ = &amp;#039;0&amp;#039;;&lt;br /&gt;
        *p_str++ = &amp;#039;x&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        digits += 1;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    /*******************************************************************&lt;br /&gt;
      sign, only if decimal&lt;br /&gt;
    *******************************************************************/&lt;br /&gt;
    if ((val &amp;lt; 0) &amp;amp;&amp;amp; (hex == 0))&lt;br /&gt;
    {&lt;br /&gt;
 	u = ((uint32_t)-(val+1)) + 1; &lt;br /&gt;
 	sign = -1;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
	u = (uint32_t)val;&lt;br /&gt;
	sign = +1;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*******************************************************************&lt;br /&gt;
      output&lt;br /&gt;
    *******************************************************************/&lt;br /&gt;
    p_str += digits;&lt;br /&gt;
    &lt;br /&gt;
    if (hex == 0)&lt;br /&gt;
    {&lt;br /&gt;
        /***************************************************************&lt;br /&gt;
          write as decimal without leading zeroes&lt;br /&gt;
        ***************************************************************/&lt;br /&gt;
        do&lt;br /&gt;
        {&lt;br /&gt;
            tmp = u % 10;&lt;br /&gt;
            *--p_str = (char)tmp+&amp;#039;0&amp;#039;;&lt;br /&gt;
            u /= 10; &lt;br /&gt;
        } while (u &amp;gt; 0);&lt;br /&gt;
&lt;br /&gt;
        if (sign &amp;lt; 0)&lt;br /&gt;
        {&lt;br /&gt;
            *--p_str = &amp;#039;-&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while (p_str &amp;gt; dst)&lt;br /&gt;
        {&lt;br /&gt;
            *--p_str = &amp;#039; &amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        /***************************************************************&lt;br /&gt;
          write as hex &lt;br /&gt;
        ***************************************************************/&lt;br /&gt;
        for (i=0; i&amp;lt;digits; i++)&lt;br /&gt;
        {&lt;br /&gt;
            tmp = u &amp;amp; 0x0F;&lt;br /&gt;
            if (tmp &amp;lt; 10)&lt;br /&gt;
                *--p_str = (char)tmp + &amp;#039;0&amp;#039;;&lt;br /&gt;
            else&lt;br /&gt;
                *--p_str = (char)tmp + &amp;#039;A&amp;#039; - 10;&lt;br /&gt;
            u = u &amp;gt;&amp;gt; 4;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    return dst;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hex to integer ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/***********************************************************************&lt;br /&gt;
 @brief     convert hex string to 32-bit unsigned interger&lt;br /&gt;
&lt;br /&gt;
 @param     str - pointer to string with hex-value&lt;br /&gt;
 @return    unsigned integer 32-bit&lt;br /&gt;
&lt;br /&gt;
 @note      no range checking !&lt;br /&gt;
***********************************************************************/&lt;br /&gt;
uint32_t hextou32 (char *str)&lt;br /&gt;
{&lt;br /&gt;
    /*******************************************************************&lt;br /&gt;
      Locals&lt;br /&gt;
    *******************************************************************/&lt;br /&gt;
    uint32_t result = 0;&lt;br /&gt;
    uint32_t temp;&lt;br /&gt;
    char *p_str = str;&lt;br /&gt;
    char c;&lt;br /&gt;
	&lt;br /&gt;
    /*******************************************************************&lt;br /&gt;
      convert digits until terminating 0&lt;br /&gt;
      ignore leading whitespaces&lt;br /&gt;
      ignore leading 0x &lt;br /&gt;
    *******************************************************************/&lt;br /&gt;
    while (c = *p_str++)&lt;br /&gt;
    {&lt;br /&gt;
 	if ((c != &amp;#039; &amp;#039;) &amp;amp;&amp;amp; (c != &amp;#039;\9&amp;#039;))&lt;br /&gt;
	{&lt;br /&gt;
    	    // convert to uppercase&lt;br /&gt;
	    if (c &amp;gt;= &amp;#039;a&amp;#039;) c -= (&amp;#039;a&amp;#039;-&amp;#039;A&amp;#039;);&lt;br /&gt;
			&lt;br /&gt;
	    if (c == &amp;#039;X&amp;#039;)&lt;br /&gt;
	    {&lt;br /&gt;
		result = 0;&lt;br /&gt;
	    }&lt;br /&gt;
	    else&lt;br /&gt;
	    {&lt;br /&gt;
		// convert to decimal&lt;br /&gt;
		temp = (c &amp;lt; &amp;#039;A&amp;#039;)? c-&amp;#039;0&amp;#039;: c-&amp;#039;A&amp;#039;+10;&lt;br /&gt;
		&lt;br /&gt;
		// merge result&lt;br /&gt;
		result = result &amp;lt;&amp;lt; 4;&lt;br /&gt;
		result |= temp;&lt;br /&gt;
	    }&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
    return (result);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hex/ASCII Dump via UART ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/***********************************************************************&lt;br /&gt;
 @brief	    helper function: convert an 8-bit byte to base-16 ASCII &lt;br /&gt;
&lt;br /&gt;
 @param	    x - value to convert&lt;br /&gt;
 @return    pointer to string&lt;br /&gt;
***********************************************************************/&lt;br /&gt;
char *u8tohex (uint8_t x)&lt;br /&gt;
{&lt;br /&gt;
    /*******************************************************************&lt;br /&gt;
      locals&lt;br /&gt;
    *******************************************************************/&lt;br /&gt;
    static char s[3];&lt;br /&gt;
    uint8_t temp;&lt;br /&gt;
&lt;br /&gt;
    /*******************************************************************&lt;br /&gt;
      convert&lt;br /&gt;
    *******************************************************************/&lt;br /&gt;
    temp = x &amp;gt;&amp;gt; 4;&lt;br /&gt;
    if (temp &amp;gt; 9)&lt;br /&gt;
        temp += &amp;#039;A&amp;#039;-10;&lt;br /&gt;
    else&lt;br /&gt;
        temp += &amp;#039;0&amp;#039;;&lt;br /&gt;
    s[0] = temp;&lt;br /&gt;
&lt;br /&gt;
    temp = x &amp;amp; 0x0F;&lt;br /&gt;
    if (temp &amp;gt; 9)&lt;br /&gt;
        temp += &amp;#039;A&amp;#039;-10;&lt;br /&gt;
    else&lt;br /&gt;
        temp += &amp;#039;0&amp;#039;;&lt;br /&gt;
    s[1] = temp;&lt;br /&gt;
&lt;br /&gt;
    s[2] = 0;&lt;br /&gt;
    return (s);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***********************************************************************&lt;br /&gt;
 @brief	    ASCII + Hex dump via UART&lt;br /&gt;
&lt;br /&gt;
 @param	    buffer - pointer to buffer&lt;br /&gt;
 @param     count  - number of bytes to display&lt;br /&gt;
 @return    -&lt;br /&gt;
&lt;br /&gt;
 @note      calls DM2_uartWriteStr&lt;br /&gt;
***********************************************************************/&lt;br /&gt;
void dump (char* buffer, size_t count)&lt;br /&gt;
{&lt;br /&gt;
    int32_t i, j;&lt;br /&gt;
    char c;&lt;br /&gt;
&lt;br /&gt;
    DM2_uartWriteStr(h_uart, &amp;quot;\r\nBuffer:&amp;quot;, DM2_UART_NOTIMEOUT);&lt;br /&gt;
    if (count == 0)&lt;br /&gt;
    {&lt;br /&gt;
        DM2_uartWriteStr(h_uart, &amp;quot;empty\r\n&amp;quot;, DM2_UART_NOTIMEOUT);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        DM2_uartWriteStr(h_uart, &amp;quot;\r\n      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F - ASCII\r\n&amp;quot;, DM2_UART_NOTIMEOUT);&lt;br /&gt;
        for (i=0; i&amp;lt;(count/16); i++)&lt;br /&gt;
        {&lt;br /&gt;
            DM2_uartWriteStr(h_uart, u8tohex((uint8_t)i), DM2_UART_NOTIMEOUT);&lt;br /&gt;
            DM2_uartWriteStr(h_uart, &amp;quot;0 -&amp;quot;, DM2_UART_NOTIMEOUT);&lt;br /&gt;
            for (j=0; j&amp;lt;16; j++)&lt;br /&gt;
            {&lt;br /&gt;
                DM2_uartWriteStr(h_uart, &amp;quot; &amp;quot;, DM2_UART_NOTIMEOUT);&lt;br /&gt;
                DM2_uartWriteStr(h_uart, u8tohex(buffer[16*i + j]), DM2_UART_NOTIMEOUT);&lt;br /&gt;
            }&lt;br /&gt;
            DM2_uartWriteStr(h_uart, &amp;quot; - &amp;quot;, DM2_UART_NOTIMEOUT);&lt;br /&gt;
            for (j=0; j&amp;lt;16; j++)&lt;br /&gt;
            {&lt;br /&gt;
                c = buffer[16*i + j];&lt;br /&gt;
                if (!isprint(c)) c = &amp;#039;.&amp;#039;;&lt;br /&gt;
                while (!DM2_uartWrite(h_uart, c)) ;&lt;br /&gt;
            }&lt;br /&gt;
            DM2_uartWriteStr(h_uart, &amp;quot;\r\n&amp;quot;, DM2_UART_NOTIMEOUT);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    DM2_uartWriteStr(h_uart, &amp;quot;\r\n&amp;quot;, DM2_UART_NOTIMEOUT);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:DSP]]&lt;/div&gt;</summary>
		<author><name>WikiImporter</name></author>
	</entry>
</feed>