⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ltoa.c

📁 Rabbit 32Bit RTOS源代码
💻 C
字号:
/*********************************************************************
*                   Copyright (c) 2011-2012,李士伟
*                     All rights reserved.
*文 件 名:ltoa.c
*描    述:长整数转化成ascii码
*当前版本:V1.00
*作    者:李士伟
*创建日期:2012.01.15
**********************************************************************/
#include <lib\ltoa.h>

/*********************************************************************
*函 数 名:ltoa
*描    述:长整数转化成二进制,八进制,十进制,十六进制的ascii码
*输入参数:num: 需转化的长整数
*          base: 转化进制
*输出参数:dst: 存储转化的ascii码 
*返 回 值:转化ascii码使用字节数(包含'\0')
*注    意:dst指向的内存是否足够存储转化的ascii码
**********************************************************************/
unsigned int ltoa(long num, int base, char *dst)
{
    unsigned int len;
    int flag = 0;
    const char hex[] = "0123456789abcdef";
    char buf[8 * sizeof(unsigned long) + 4];
    char *p = buf + 8 * sizeof(unsigned long) + 4;

    *--p = '\0';

    if (num < 0)
    {
        num = -num;
        flag = 1;
    }

    if (base == 10)
    {
        do
        {
            *--p = '0' + num % 10;
            num = num / 10;
        }
        while (num);
    }
    else if (base == 16)
    {
        do
        {
            *--p = hex[num % 16];
            num = num >> 4;
        }
        while (num);
        *--p = 'x';
        *--p = '0';
    }
    else if (base == 8)
    {
        do
        {
            *--p = (num & 0x07) + '0';
            num = num >> 3;
        }
        while (num);
        *--p = '0';
    }
    else if (base == 2)
    {
        do
        {
            *--p = (num & 0x01) + '0';
            num = num >> 1;
        }
        while (num);
        *--p = 'b';
        *--p = '0';
    }

    len = buf + 8 * sizeof(unsigned long) + 4 - p + flag;

    if (flag)
    {
        *dst++ = '-';
    }

    do
    {
        *dst++ = *p;
    }
    while (*p++ != '\0');

    return len;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -