将特定数组元素转换为整数值

标签 c arrays

我已经声明了一个数组char Buffer[100]="01 05 01 4A 63 41";现在数组看起来像这样

Buffer[0]='0'
Buffer[1]='1'
Buffer[2]=' '
Buffer[3]='0'
Buffer[4]='5'

我只想将这些值转换为 int `eg.:

  • Buffer[0]='0', Buffer[1]='1' 到 0x01 (1)
  • Buffer[0]='0', Buffer[1]='5' 到 0x05 (5)
  • ...等等

atoi() 无法使用,因为它将所有 Buffer 值转换为整数。

如何将特定的空格分隔值子字符串转换为整数?

最佳答案

我的第一个解决方案仅适用于整数,下面的解决方案也适用于十六进制数。我写下了转换十六进制字符串表示的函数。数转化为十进制数。然后,按照 Jochim Pileborg 的建议,我使用 strtok 来解​​析给定的 Buffer 数组。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int hexToInt(char *tok)
{
  int i,out=0, tens=1, digit;
  for(i=strlen(tok)-1; i>=0; i--)
  {
    switch(tok[i])
    {
      case '0':
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9': digit=tok[i]-'0';
                break;
      case 'A': digit=10; break;
      case 'B': digit=11; break;
      case 'C': digit=12; break;
      case 'D': digit=13; break;
      case 'E': digit=14; break;
      case 'F': digit=15; break;
    }
    out+=digit*tens;
    tens*=16;
  }
//  printf("hex:%s  int:%d ", tok, out);
  return out;
}

int main()
{
  char Buffer[100]="01 2A 10 15 20 25";
  int intarr[100],current=0;
  char *tok=malloc(20*sizeof(char));
  tok=strtok(Buffer," ");
  while(tok!=NULL)
  {
    intarr[current]=hexToInt(tok);
    current++;
    tok=strtok(NULL," ");
  }
  printf("\n");
}

关于将特定数组元素转换为整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19477897/

相关文章:

javascript - 循环遍历数组内的数组以确定值

c++ - 模板类中的数组定义

C++ 将文本文件读入 vec4 数组

c - 基本C问题,关于内存分配和赋值

c - C代码的输出

C 子字符串方法

c - 使用指针将一个数组分配给另一个数组

c - 如何在C中为矩阵的特定位置赋值?

javascript - 获取带有 DST 设置的 JavaScript 时区字符串

java - 数组未正确存储值