gpt4 book ai didi

c - 如何将连接的字符串转换为十进制数字

转载 作者:行者123 更新时间:2023-11-30 19:50:57 25 4
gpt4 key购买 nike

基本上,下面的代码会产生一个放置在“dec”中的串联字符串。从执行以下代码行的函数读取的内存为 101E34,即“dec”,应转换为 163052。如何转换该字符串?

   for (int j = 0; j <2; j++)
{
char temp[100]= "";
sprintf(temp, "%x", readArray[j]);
if (strlen(temp) < 4)
{
char dec[100] = "";
for (int r = 0; r < 4 - strlen(temp); r++)
{
strcat(dec,"0");
}
strcat(dec, temp);
}
}

最佳答案

#include <stdio.h>

int main() {
char input[] = "101E34";
char output[100];
int i = 0, j = 0, k = 0;
for(i = 0; i < 6;) {
if(input[i] >= '0' && input[i] <= '9')
j = (input[i] - '0')<< 4;
else if(input[i] >= 'A' && input[i] <= 'Z')
j = (input[i] - 'A' + 10)<< 4;
else if(input[i] >= 'a' && input[i] <= 'z')
j = (input[i] - 'a' + 10)<< 4;


if(input[i + 1] >= '0' && input[i + 1] <= '9')
j = j + (input[i + 1] - '0');
else if(input[i + 1] >= 'A' && input[i + 1] <= 'Z')
j = j + (input[i + 1] - 'A' + 10);
else if(input[i + 1] >= 'a' && input[i + 1] <= 'z')
j = j + (input[i + 1] - 'a' + 10);

k += snprintf((output + k), (100 - k), "%d", j);
i = i + 2;
}
puts(output);
return 0;
}

唯一的限制是输出的大小。如果输入很大或者每次运行都会发生变化,您可能需要动态分配它。

关于c - 如何将连接的字符串转换为十进制数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53136838/

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