gpt4 book ai didi

将长整数(十进制)转换为基数为 36 的字符串(C 中的 strtol 反转函数)

转载 作者:行者123 更新时间:2023-12-05 00:09:53 25 4
gpt4 key购买 nike

我可以使用 strtol用于将基于 base36 的值(另存为字符串)转换为 long int 的函数:

long int val = strtol("ABCZX123", 0, 36);

是否有一个标准函数可以反转这个?也就是说,要转换一个 long int val 变量转换为 base36 字符串,得到 "ABCZX123"再次?

最佳答案

对此没有标准功能。你需要自己写一个。

用法示例:https://godbolt.org/z/MhRcNA

const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

char *reverse(char *str)
{
char *end = str;
char *start = str;

if(!str || !*str) return str;
while(*(end + 1)) end++;
while(end > start)
{
int ch = *end;
*end-- = *start;
*start++ = ch;
}
return str;
}

char *tostring(char *buff, long long num, int base)
{
int sign = num < 0;
char *savedbuff = buff;

if(base < 2 || base >= sizeof(digits)) return NULL;
if(buff)
{
do
{
*buff++ = digits[abs(num % base)];
num /= base;
}while(num);
if(sign)
{
*buff++ = '-';
}
*buff = 0;
reverse(savedbuff);
}
return savedbuff;
}

关于将长整数(十进制)转换为基数为 36 的字符串(C 中的 strtol 反转函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59751447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com