| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1744 人关注过本帖
标题:C语言怎么把字符串转换为可以用于计算的数字
只看楼主 加入收藏
cz737
Rank: 2
等 级:论坛游民
帖 子:85
专家分:20
注 册:2010-7-7
结帖率:96.3%
收藏
已结贴  问题点数:10 回复次数:9 
C语言怎么把字符串转换为可以用于计算的数字
现在又92283976 73b1c080 1e448b0 bd44dae6e 这一串是以字符串形式存储的数据
要怎么把她读取到一个整形的数组中用于进行计算呢!!!!
后面一段还是16进制的
搜索更多相关主题的帖子: C语言 数字 字符 
2010-08-13 17:29
cz737
Rank: 2
等 级:论坛游民
帖 子:85
专家分:20
注 册:2010-7-7
收藏
得分:0 
后面的十六进制的我直接用fscanf可以按整形读出来吗???高手出个声啊
2010-08-13 17:38
苗伊
该用户已被删除
收藏
得分:1 
提示: 作者被禁止或删除 内容自动屏蔽
2010-08-13 18:04
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:1 
以下是引用cz737在2010-8-13 17:38:08的发言:

后面的十六进制的我直接用fscanf可以按整形读出来吗???高手出个声啊
完全可以呢!!!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-13 22:50
richardhua
Rank: 1
等 级:新手上路
帖 子:5
专家分:9
注 册:2010-4-23
收藏
得分:1 
假如全是数字的直接可以用sscanf,比如
sscanf("92283976"%ld",&i);
有16进制的自己写个函数吧
程序代码:
long StrToNum(char *str)
{
    long sum=0;
    char *ch=str;
    while(*str!='\0')
    {
        if(*str>='0'&&*str<='9')
        {
            sum+=sum*16+*str-'0';
        }
        else if(*str>='a'&&*str<'z')
        {
            sum+=sum*16+*str-'a'+10;
        }
        else
        {
            sum+=sum*16+*str-'A'+10;
        }
        str++;
    }
    return sum;
}
2010-08-14 10:08
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:1 
十六进制就sscanf(ch,"%x",&a);嘛

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-08-14 10:22
flyingcat
Rank: 4
来 自:HDU
等 级:业余侠客
威 望:2
帖 子:55
专家分:230
注 册:2010-7-18
收藏
得分:1 
对于普通的数字,sscanf就做得到了
char test[] = "123456" ;
int number;
sscanf(test,"%d",&number);
另外,对于16进制,参数用%x
char test[] = "bd44dae6e" ;
int number;
sscanf(test, "%x",&number);
这样子就直接把test这一串字符作为十六进制数字转存成十进制到number里了
2010-08-14 10:24
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:1 
#include <stdio.h>
#include <string.h>

int main()
{
    char str[50] = "92283976 73b1c080 1e448b0 bd44dae6e";
    int num[50] = {0};
    int i = 0;
    int j = 0;

    for(i = 0; str[i] != '\0'; i++)
    {
        if(str[i] >= '0' && str[i] <= '9')        //字符转行为数字
            num[j++] = str[i] - '0';

        else if(str[i] >= 'a' && str[i] <= 'z')    //把十六进制字符转换成十进制数
            num[j++] = str[i] - 'a' + 10 ;
        else
            continue;                    //去掉空格
    }

    printf("j = %d\n",j);
    for(i = 0; i < j; i++)
        printf("%d ",num[i]);
    printf("\n");

    return 0;
}
编了个程序做测试,结果是可以的。如果是应用的话把这个main函数改成自定义函数就是了。
2010-08-14 10:40
cz737
Rank: 2
等 级:论坛游民
帖 子:85
专家分:20
注 册:2010-7-7
收藏
得分:0 
我读取到字符串中再用strtol这个函数转换解决了。。。。
2010-08-14 16:05
新手714
Rank: 1
等 级:新手上路
帖 子:50
专家分:3
注 册:2020-4-25
收藏
得分:0 
回复 8楼 erikyo
num[j++] = str[i] - '0'这个是什么意思啊
2020-04-25 22:23
快速回复:C语言怎么把字符串转换为可以用于计算的数字
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018290 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved