不使用sprintf将unsigned int转换为十六进制字符串

问题描述

我正在尝试实现以下内容(不使用sprintf或格式化):

    void integer_to_string(unsigned int a,char *string)
{
    char arr[16] = "0123456789abcdef";
    char *p = (char *)&a;
    unsigned int i;

    for (i = 0; i < 4; i++) {
        unsigned char lo = p[i] & 0xf; 
        unsigned char hi = p[i] >> 4;

        string[i*2] = arr[hi];
        string[i*2+1] = arr[lo];
    }
    string[2*i] = '\0';
}

此程序正在从整数a转换并将a转换为十六进制并将其余的保存为字符串。因此,应该将一个类似10的整数返回给“ 0000000a”,但是却给了我一个“ 0a000000”的值。我究竟做错了什么?如何将0a移到末尾而不是开始。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)