![](/img/trans.png)
[英]How to convert decimal numbers stored as characters in a string to doubles?
[英]how to convert a concatenate string of characters to decimal numbers
基本上,下面的代碼會產生一個連接字符串,放在“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;
}
唯一的限制是output
的大小。 如果input
很大或每次運行都發生變化,您可能需要動態分配它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.