gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:50 24 4
gpt4 key购买 nike

我已经声明了一个数组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/

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