簡體   English   中英

如何將連接字符串轉換為十進制數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM