首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ASCII转换为INT

如何从ASCII转换为INT
EN

Stack Overflow用户
提问于 2021-02-08 22:08:10
回答 2查看 88关注 0票数 0

我有一个带数字的字符串"a“(例如”我有4个苹果“),我试图把数字"4”放到一个int变量中,而不给我ASCII码,在本例中是“52”(ASCII4是52)。

我试过int y = (int)a[8],但它不起作用。

EN

回答 2

Stack Overflow用户

发布于 2021-02-08 22:11:58

如果消息的形状与示例中给出的形状完全相同,那么您可以尝试下面代码的第一部分。

sscanf()函数分析字符串,可以匹配文字以及您在变量中提取的值。

编辑

还提供了一个更灵活的版本,以便检测字符串中任何位置的整数。这个想法是用%s逐个提取单词,并跳过它们,这要归功于%n已知的结束位置,直到这样的单词被认为是整数。

代码语言:javascript
复制
/**
  gcc -std=c99 -o prog_c prog_c.c \
      -pedantic -Wall -Wextra -Wconversion \
      -Wc++-compat -Wwrite-strings -Wold-style-definition -Wvla \
      -g -O0 -UNDEBUG -fsanitize=address,undefined
**/

#include <stdio.h>

int
main(void)
{
  // fixed shape for the message
  const char *msg="I have 4 apples";
  int number=-1;
  if(sscanf(msg, "I have %d apples", &number)==1)
  {
    printf("number=%d\n", number);
  }
  // more flexible version
  const char *msg2="Number 5 appears here";
  while(*msg2!='\0')
  {
    char word[20]="";
    int pos=-1;
    sscanf(msg2, "%s%n", word, &pos);
    int number=-1;
    if(sscanf(word, "%d", &number)==1)
    {
      printf("number=%d\n", number);
      break;
    }
    msg2+=pos; // skip this word
  }
  return 0;
}
票数 1
EN

Stack Overflow用户

发布于 2021-02-08 22:12:04

我倾向于这样做的方法是从它中减去'0'

例如:

代码语言:javascript
复制
char x = '8';
int y = x - '0';

字符通常只是一个整数,而ASCII码的数字是连续的,所以如果你能得到从'0'到你的数字的偏移量,你就得到了数字的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66103247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档