精华内容
下载资源
问答
  • 不使用int()函数的情况下把字符串转换为数字,如把字符串”12345″转换为数字12345。 方法一:利用str函数 既然不能用int函数,那我们就反其道而行,用str函数找出每一位字符表示的数字大写。 def atoi(s): s = s...
  • (1)给定如下面形式的字符串:“ad,app,ai,apk”,"bed book bool bat byte"...把数字储存成字符串储存的就是数字字符,例如可以将213以‘2’、‘1’、‘3’、‘\0’的形式储存在一个字符串数组中。而以...

    (1)给定如下面形式的字符串:“ad,app,ai,apk”,"bed book bool bat byte",它们由一组由固定字符隔开的字符串组合而成。

    如何将长字符串分割,即去掉其中的空格或逗号,使能够取出其中单个的字符串?

    (2)数字既能以字符串形式储存,也能以数值形式储存。把数字储存成字符串储存的就是数字字符,例如可以将213以‘2’、‘1’、‘3’、‘\0’的形式储存在一个字符串数组中。而以数值形式储存213,储存的是int类型的值。

    假设程序需要使用数值命令形参,但是命令形参被读取为字符串。因此,要使用数值必须先把字符串转换为数字。

    实例:这个txt文档中所有的SEED行是32个16进制数“0XAA”形式的文本,中间都以‘,’隔开,读取文件时数字以字符串形式储存,现需要取出SEED行所有的16进制数字的数值。


    下面的程序实现了将所有数值取出,并将这些数重新以16进制形式写入一个新的txt文档中,新的文档格式如下

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define SEEDNUM 10
    typedef struct {
    	char **str;     //the PChar of string array  
    	size_t num;     //the number of string  
    }IString;
    int Split(char *src, char *delim, IString* istr);
    
    int main(int argc, char *argv[])
    {
        FILE * sfp = NULL;
        FILE * ofp = NULL;
        sfp = fopen("10seed1122test.txt", "r");
    	ofp = fopen("10output1122.txt", "w");
    	
        if (NULL == sfp) /* 如果失败了 */
    	{
    		printf("错误!seed文件打开失败!");
    		exit(EXIT_FAILURE); /* 中止程序 */
    	}
    	if (NULL == ofp) /* 如果失败了 */
    	{
    		printf("错误!output文件打开失败!");
    		exit(EXIT_FAILURE); /* 中止程序 */
    	}
    	
    	int i;
    	long value[32];
    	char * end;
    	unsigned char tem_buf[1024];
    	unsigned char dest_buf[1024];
    	
    	for ( i = 0; i < SEEDNUM * 2; i++)
    
    	{
    		unsigned char output[32];
    		fgets(tem_buf, 1024, sfp);
    		if (i % 2)
    		{
    			strncpy(dest_buf, tem_buf + 5, 161);
    
    			IString istr;
    			Split(dest_buf, ",", &istr);
    			
    			int j;
    			unsigned char tem[32];
    			for (j = 0; j < 32; j++)
    			{
    				char dest[2];
    				strncpy(dest, istr.str[j] + 2, 2);
    				value[j] = strtol(dest, &end, 16);
    				fprintf(ofp,"%02X",value[j]);
    	
    			}
    			fprintf(ofp, "\n");
    		}
    	}
        return 0;
    }
    
    int Split(char *src, char *delim, IString* istr)//split buf  
    {
    	int i;
    	char *str = NULL, *p = NULL;
    
    	(*istr).num = 1;
    	str = (char*)calloc(strlen(src) + 1, sizeof(char));
    	if (str == NULL) return 0;
    	(*istr).str = (char**)calloc(1, sizeof(char *));
    	if ((*istr).str == NULL) return 0;
    	strcpy(str, src);
    
    	p = strtok(str, delim);
    	(*istr).str[0] = (char*)calloc(strlen(p) + 1, sizeof(char));
    	if ((*istr).str[0] == NULL) return 0;
    	strcpy((*istr).str[0], p);
    	for (i = 1; p = strtok(NULL, delim); i++)
    	{
    		(*istr).num++;
    		(*istr).str = (char**)realloc((*istr).str, (i + 1)*sizeof(char *));
    		if ((*istr).str == NULL) return 0;
    		(*istr).str[i] = (char*)calloc(strlen(p) + 1, sizeof(char));
    		if ((*istr).str[0] == NULL) return 0;
    		strcpy((*istr).str[i], p);
    	}
    	free(str);
    	str = p = NULL;
    
    	return 1;
    }

    此外,使用string.h库里的strtok函数也能用于分割字符串,strtok函数的用法有点不寻常,参考以下程序,可以达到与上面程序相同的效果。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define SEEDNUM 10
    int main (void)
    {
    	const char * delim = ",";
    
    	FILE * sfp = NULL;
        FILE * ofp = NULL;
        sfp = fopen("10seed1122test.txt", "r");
    	ofp = fopen("strtok10output1122.txt", "w");
    	
    	if (NULL == sfp) /* 如果失败了 */
    	{
    		printf("错误!seed文件打开失败!");
    		exit(EXIT_FAILURE); /* 中止程序 */
    	}
    	if (NULL == ofp) /* 如果失败了 */
    	{
    		printf("错误!output文件打开失败!");
    		exit(EXIT_FAILURE); /* 中止程序 */
    	}
    	
    	int i;
    	for (i=0;i<SEEDNUM*2;i++)
    	{
    		char *pt;
    		char tem_buf[512];
    		fgets (tem_buf,512,sfp);
    		if (i%2)
    		{
    			pt = strtok(tem_buf+5,delim);
    			int j;
    			for(j=0; j<32 && pt; j++)
    			{
    				long value[32];
    				char *temp;
    				char *end;
    				temp = pt+2;
    				value[j] = strtol(temp, &end, 16);
    				fprintf(ofp,"%02X",value[j]);
    				pt = strtok(NULL,delim);
    			}
    			fprintf(ofp,"\n");
    		}
    	}
    	
    	return 0;
    }






    展开全文
  • Python不使用int()函数把字符串转换为数字.pdf
  • 函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字字符串结束时(‘\0’)才结束...
  • python不使用int()函数把字符串转换为数字

    不使用int()函数的情况下把字符串转换为数字,如把字符串"12345"转换为数字12345。

    方法一:利用str函数

    既然不能用int函数,那我们就反其道而行,用str函数找出每一位字符表示的数字大写。

    def atoi(s):
       s = s[::-1]
       num = 0
       for i, v in enumerate(s):
          for j in range(0, 10):
             if v == str(j):
                num += j * (10 ** i)
       return num

    方法二:利用ord函数

    利用ord求出每一位字符的ASCII码再减去字符0的ASCII码求出每位表示的数字大写。
    def atoi(s):
       s = s[::-1]
       num = 0
       for i, v in enumerate(s):
          offset = ord(v) - ord('0')
          num += offset * (10 ** i)
       return num

    方法三:利用eval函数

    eval的功能是将字符串str当成有效的表达式来求值并返回计算结果。我们利用这特点可以利用每位字符构造成和1相乘的表达式,再用eval算出该表达式的返回值就表示数字大写。
    def atoi(s):
       s = s[::-1]
       num = 0
       for i, v in enumerate(s):
          t = '%s * 1' % v
          n = eval(t)
          num += n * (10 ** i)
       return num

    展开全文
  • 包含了很多C语言字符串数字转换函数,有详细的代码解释和案例
  • 字符串转化为数字函数

    千次阅读 2018-05-04 14:06:02
    C++字符串转化为数字的库函数 1、atoi 功 能:一字符串转换为整数 用 法:int atoi(const char *nptr); 详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是数字也...

    C++字符串转化为数字的库函数

    1、atoi

    功 能:把一字符串转换为整数

    用 法:int atoi(const char *nptr);
    详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结束符 /0 时停止转换,返回整型数。 参 数:

      *nptr: 待转化的字符串。

    返回值:

     int: 转换后的整形数。

    备注:该函数的头文件是"stdlib.h"

     

    2、atol

    功 能:把一字符串转换为长整形

    用 法:long atol(const char *nptr);

    详细解释:atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('/0')才结束转换,并将结果返回。

    参 数:

      *nptr: 待转化的字符串。

    返回值:

     long: 转换后的长整形数。

    备注:该函数的头文件是"stdlib.h"

     

    3、atof

    功 能:把一个字符串转换为双精度浮点数

    用 法:double atof(const char *nptr);

    详细解释:atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时 ('/0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。

    参 数:
      *nptr: 待转化的字符串。

    返回值:

     double: 转换后的双精度浮点数。

    备注:该函数的头文件是"stdlib.h"

     

    4、strtod

    功 能:将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字

    用 法:double strtod(const char *nptr,char **endptr);

    详细解释:strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时 ('/0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr 字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。

    参 数:

      *nptr: 待转化的字符串。

      **endptr: 若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。

    返回值:

     double: 转换后的双精度浮点数。

    备注:该函数的头文件是"stdlib.h"

     

    5、strtol

    功 能:将字符串转换为长整形值,并报告不能被转换的所有剩余数字

    用 法:long int strtol(const char *nptr,char **endptr,int base);

    详细解释:这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采用的进制 方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则 会使用16进制做转换、遇到’0’前置字符而不是’0x’的时候会使用8进制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字 符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('/0')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到 不合条件而终止的nptr中的字符指针由endptr返回。

    参 数:

      *nptr: 待转化的字符串。

      **endptr: 若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。

      base:采用的进制方式

    返回值:

     long int: 转换后的长整形数。

    备注:该函数的头文件是"stdlib.h"

     

    6、strtoul

    功 能:将字符串转换为无符号长整形值,并报告不能被转换的所有剩余数字。

    用 法:unsigned long int strtoul(const char *nptr,char **endptr,int base);
    详 细解释:strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用 的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时则是采用10进制做转换,但遇到如'0x'前 置字符则会使用16进制做转换。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到 非数字或字符串结束时('')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr 返回。

    参 数:

      *nptr: 待转化的字符串。

      **endptr: 若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。

      base:采用的进制方式

    返回值:

     unsigned long int: 转换后的无符号长整形数。

    备注:该函数的头文件是"stdlib.h"

     

    展开全文
  • 字符串转换为数字函数

    千次阅读 2020-10-29 15:31:37
    函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字字符串结束时(’\0’)才结束...

    头文件:#include <stdlib.h>

    atoi() 函数用来将字符串转换成整数(int),其原型为:
    int atoi (const char * str);

    【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(’\0’)才结束转换,并将结果返回。

    【返回值】返回转换后的整型数;如果 str 不能转换成 int 或者 str 为空字符串,那么将返回 0。

    温馨提示:ANSI C 规范定义了 stof() 、 atoi() 、 atol() 、 strtod() 、 strtol() 、 strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习。另外在 C99 / C++11 规范中又新增了5个函数,分别是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介绍,请大家自行学习。

    范例:将字符串a 与字符串b 转换成数字后相加。

    #include <stdio.h>
    #include <stdlib.h>
    int main ()
    {
        int i;
        char buffer[256];
        printf ("Enter a number: ");
        fgets (buffer, 256, stdin);
        i = atoi (buffer);
        printf ("The value entered is %d.", i);
        system("pause");
        return 0;
    }
    

    执行结果:

    Enter a number: 233cyuyan
    The value entered is 233.

    展开全文
  • Oracle字符串转换数字函数to_number

    万次阅读 2013-10-25 10:16:48
    Oracle字符串转换数字函数to_number: select to_number('123') from dual;
  • 5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode).pdf
  • 功能:将从字符串的第一个位置开始,略去空白,将字符型数字转化为数值型数字,直到遇到第一个非数字型字符时停止。如果字符串中第一个元素不是数字,那么返回0。可以识别正负号。 例子: #include #in
  • c语言字符串数字转换函数
  • atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换成无符号长整型数) toascii(将整型数...
  • jquery中把字符串转换为数字

    万次阅读 2015-10-22 17:25:08
    其实在jquery里把字符串转换为数字,用的...先来看看JS里把字符串转换为数字函数命令: 1:parseInt(string) : 这个函数的功能是从string的开头开始解析,返回一个整数,说起来比较笼统,下面来看几个实例,大家
  • 1、带符号的数字且长度较短的字符串 +12,-13等 2、不带符号的数字且长度较短的字符串 2334等 3、字母和数字组合:a23 ,34fg56等 4、其他非数字非字符字符和数字或者字母的组合:==2、++1、&…(23、342——...
  • C语言常用数字字符串转换函数,toi 字符串转换成整型数 atol 字符串转换成长整型数 atof 字符串转换成浮点型数 strtol 字符串转换成长整型数 strtoul 字符串转换成无符号长整型数 strtod 字符串转换成浮点数
  • C语言中将字符串转换为数字

    千次阅读 2020-11-06 11:51:44
    下列函数可以将字符串转换为数字函数名 作 用 atof() 将字符串转换为双精度浮点型值 atoi() 将字符串转换为整型值 atol() 将字符串转换为长整型值 strtod() 将字符串转换为双精度浮点型值,并报告不能被转换的...
  • 字符串转换数字,得用到parseInt函数。parseInt(string) : 函数从string的开始解析,返回一个整数。 举例:parseInt(‘123’) : 返回 123(int);parseInt(‘1234xxx’) : 返回 1234(int); 如果解析不到...
  • 主要介绍了C语言实现将字符串转换为数字的方法,涉及系统函数atoi()函数的使用技巧,需要的朋友可以参考下
  • cstr()转换字符串 cint()转换数字 先用isnumberic函数判断 clng()转换为 Long 类型的 Variant(推荐使用clng代替cint,尤其是文章id等可能出现大于65536的数字) 整形……转字符形用:cstr()函数 字符形转整形用:...
  • C语言 字符串数字转换函数

    千次阅读 2019-01-08 06:03:52
    atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include &...函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做...
  • //数组里的字符串转换数字的方法 ...//数组中把数字转换字符串[1, 2, 3].map(String) //结果['1', '2', '3'] 其它:['1', '2', '3'].map(returnInt); // [1, 2, 3] // 意料之中的结果['1', '...
  • 整数转字符串 1.使用itoa 需要用到的头文件: #include &amp;lt;stdlib.h&amp;gt; # include &amp;lt;stdio.h&amp;gt; # include &amp;lt;stdlib.h&amp;gt; void main (void) { int ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 463,207
精华内容 185,282
关键字:

把字符串转化为数字的函数