📄 ltoa.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 + -