整形和字符转换
Python中print用法汇总(打印字符串,整形和浮点型)
Python中print⽤法汇总(打印字符串,整形和浮点型)1、打印字符串1. string="hello"2. #%s打印时结果是hello3. print "string=%s" % string # output: string=hello4. #%2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是hello5. print "string=%2s" % string # output: string=hello6. #%7s意思是字符串长度为7,当原字符串的长度⼩于7时,在原字符串左侧补空格,7. #所以%7s的打印结果是 hello8. print "string=%7s" % string # output: string= hello9. #%-7s意思是字符串长度为7,当原字符串的长度⼩于7时,在原字符串右侧补空格,10. #所以%-7s的打印结果是 hello11. print "string=%-7s!" % string # output: string=hello !12. #%.2s意思是截取字符串的前2个字符,所以%.2s的打印结果是he13. print "string=%.2s" % string # output: string=he14. #%.7s意思是截取字符串的前7个字符,当原字符串长度⼩于7时,即是字符串本⾝,15. #所以%.7s的打印结果是hello16. print "string=%.7s" % string # output: string=hello17. #%a.bs这种格式是上⾯两种格式的综合,⾸先根据⼩数点后⾯的数b截取字符串,18. #当截取的字符串长度⼩于a时,还需要在其左侧补空格19. print "string=%7.2s" % string # output: string= he20. print "string=%2.7s" % string # output: string=hello21. print "string=%10.7s" % string # output: string= hello22. #还可以⽤%*.*s来表⽰精度,两个*的值分别在后⾯⼩括号的前两位数值指定23. print "string=%*.*s" % (7,2,string) # output: string= he2、打印整形1. num=142. #%d打印时结果是143. print "num=%d" % num # output: num=144. #%1d意思是打印结果为1位整数,当整数的位数超过1位时,按整数原值打印,所以%1d的打印结果还是145. print "num=%1d" % num # output: num=146. #%3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数左侧补空格,所以%3d的打印结果是 147. print "num=%3d" % num # output: num= 148. #%-3d意思是打印结果为3位整数,当整数的位数不够3位时,在整数右侧补空格,所以%3d的打印结果是14_9. print "num=%-3d" % num # output: num=14_10. #%05d意思是打印结果为5位整数,当整数的位数不够5位时,在整数左侧补0,所以%05d的打印结果是0001411. print "num=%05d" % num # output: num=0001412. #%.3d⼩数点后⾯的3意思是打印结果为3位整数,13. #当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果是01414. print "num=%.3d" % num # output: num=01415. #%.0003d⼩数点后⾯的0003和3⼀样,都表⽰3,意思是打印结果为3位整数,16. #当整数的位数不够3位时,在整数左侧补0,所以%.3d的打印结果还是01417. print "num=%.0003d" % num # output: num=01418. #%5.3d是两种补齐⽅式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,再在左侧补空格,19. #规则就是补0优先,最终的长度选数值较⼤的那个,所以%5.3d的打印结果还是 01420. print "num=%5.3d" % num # output: num= 01421. #%05.3d是两种补齐⽅式的综合,当整数的位数不够3时,先在左侧补0,还是不够5位时,22. #由于是05,再在左侧补0,最终的长度选数值较⼤的那个,所以%05.3d的打印结果还是0001423. print "num=%05.3d" % num # output: num=0001424. #还可以⽤%*.*d来表⽰精度,两个*的值分别在后⾯⼩括号的前两位数值指定25. #如下,不过这种⽅式04就失去补0的功能,只能补空格,只有⼩数点后⾯的3才能补026. print "num=%*.*d" % (04,3,num) # output: num= 0143、打印浮点型1. import math2. #%a.bf,a表⽰浮点数的打印长度,b表⽰浮点数⼩数点后⾯的精度3. #只是%f时表⽰原值,默认是⼩数点后5位数4. print "PI=%f" % math.pi # output: PI=3.1415935. #只是%9f时,表⽰打印长度9位数,⼩数点也占⼀位,不够左侧补空格6. print "PI=%9f" % math.pi # output: PI=_3.1415937. #只有.没有后⾯的数字时,表⽰去掉⼩数输出整数,03表⽰不够3位数左侧补08. print "PI=%03.f" % math.pi # output: PI=0039. #%6.3f表⽰⼩数点后⾯精确到3位,总长度6位数,包括⼩数点,不够左侧补空格10. print "PI=%6.3f" % math.pi # output: PI=_3.14211. #%-6.3f表⽰⼩数点后⾯精确到3位,总长度6位数,包括⼩数点,不够右侧补空格12. print "PI=%-6.3f" % math.pi # output: PI=3.142_13. #还可以⽤%*.*f来表⽰精度,两个*的值分别在后⾯⼩括号的前两位数值指定14. #如下,不过这种⽅式06就失去补0的功能,只能补空格15. print "PI=%*.*f" % (06,3,math.pi) # output: PI=_3.142。
基本数据类型和表达式
第一章 基本数据类型和表达式C++数据类型为什么要分数据类型 不同的数据类型存储格式不同。
不同的数据类型所实施的操作不同C++数据类型1、整形数据各种整形数据的基本情况数据类型 占用字节(跟编译器有关)数据范围short2 bytes -32768~32767 unsigned short2 bytes0~65535int 2bytes(16位机) 4 bytes(32位机) -32768~32767 -(231)~231-1 unsigned int2bytes(16位机) 4bytes(32位机)0~65535 0~232-1long 4bytes -(231)~231-1 unsigned long4 bytes0~232-1整形常量在整形常量后可加修饰符l 或L 表示长整型基本类型实型(浮点型)双精度型(double)十进制整数:以非零的数字开始123//signed int65000//unsigned int123u//unsigned int123L//singed long int八进制整数:以零开始0123=83//unsigned int011L=9//unsigned long int十六进制整数:以0X或0x开始0x123=291//signed int0X123u=291//unsigned int整型变量类型修饰符变量名[=表达式][,变量名[=表达式]]int x,y;int i=1,j=0;2字符型数据字符型数据的基本情况字符类型:在内部实现是个单字节长度的整型,因此常用字符型定义值较小的整数。
单引号括起来的一个字符如’a’,’D’,’?’,’S’字符数据在内存中的存储形式以ASCII码存储,占1字节,用7位用于表示字符时存放的是字符的ASCII码值。
数据类型占用字节数据范围char 1Byte -128~127 unsigned char 1Byte 0~255转义字符转义序列对应ASCII码值对应功能或字符转义序列对应ASCII码值对应功能或字符\b 8 退格\’39 单引号\f 12 换页\’’34 双引号\n 10 换行\? 63 问好\r 13 回车\ccc ccc为八进制值该值对应的字符\t 9 水平制表\\xhh hh为十六进制值该值对应的字符字符变量用来存放字符常量例:char c1,c2;c1=’a’;c2=’A’;字符型和整形的关系字符数据和整形数据之间可以通用,可以按字符形式输出,也可以按整形输出。
字符和整形
字符的存储是将它对应的ASCII码存放在存储单元,它的存储形式和整形的存储形式类似,只是所占的位不同。
如:字符‘a’,它对应的ASCII码为十进制的97,转化为二进制位0110 0001。
既然字符和整形的存储形式类似,那么字符型数据和整形数据在存储和输出上是可以通用。
char ch1=97;Char ch1=0x61;与char ch2=‘a’;二者是等价的。
字符数据以整形数据输出时,可直接将ASCII码作为整数输出(十六进制或十进制),当以字符形式输出时,则需将ASCII码转为对应的字符再输出。
如字符ch=‘f’,ch=ch-'a'+10; 此时ch对应的ASCII码为15(存储形式为0000 1111),将其转为十六进制形式(%0x)输出为0F。
串型数据通信时,数据的都以字符串类型CString类型和Variant类型转换的。
那么若以十六进制发送,调用StringHex1()函数后,将发送编辑框中写入的CString类型字符串,转化为十六进制字符数组,如输入“61”抓化为0x61,若以十六进制接收,则把接收到的字符转化为其对应的十六数输出。
(1). 以十六进制发送,不以十六进制形式接收,发送’a’,接收显示时,显示它的十六进制形式。
存储类型为0110 0001
(2). 以十六进制发送,不以十六进制接收,字符‘6‘和’1’分别转化为十六进制的0x06、0x01,将他们赋给int型的hexdata和lowhexdata,为0x0006,0x0001然后再经hexdata=hexdata*16+lowhexdata;转化为0x0061;再将其放入字符型数组为0x61.显示时由于是以%C形式显示的,所以将其对应的字符‘a’显示出来。
js字符串转换整形
js字符串转换整形在js读取⽂本框或者其它表单数据的时候获得的值是字符串类型的,例如两个⽂本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要⼩于b.value,因为他们都是字符串形式的.在⽹上找了⼀下js字符串转数字的⽂章,这个⽐较全⽅法主要有三种转换函数、强制类型转换、利⽤js变量弱类型转换。
1. 转换函数:js提供了parseInt()和parseFloat()两个转换函数。
前者把值转换成整数,后者把值转换成浮点数。
只有对String类型调⽤这些⽅法,这两个函数才能正确运⾏;对其他类型返回的都是NaN(Not a Number)。
⼀些⽰例如下:复制代码代码如下:parseInt("1234blue"); //returns 1234parseInt("0xA"); //returns 10parseInt("22.5"); //returns 22parseInt("blue"); //returns NaNparseInt()⽅法还有基模式,可以把⼆进制、⼋进制、⼗六进制或其他任何进制的字符串转换成整数。
基是由parseInt()⽅法的第⼆个参数指定的,⽰例如下:复制代码代码如下:parseInt("AF", 16); //returns 175parseInt("10", 2); //returns 2parseInt("10", 8); //returns 8parseInt("10", 10); //returns 10如果⼗进制数包含前导0,那么最好采⽤基数10,这样才不会意外地得到⼋进制的值。
例如:复制代码代码如下:parseInt("010"); //returns 8parseInt("010", 8); //returns 8parseInt("010", 10); //returns 10parseFloat()⽅法与parseInt()⽅法的处理⽅式相似。
C语言把数字转换为字符串的函数
C语⾔把数字转换为字符串的函数C语⾔itoa()函数和atoi()函数详解(整数转字符C实现)C语⾔提供了⼏个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。
1.int/float to string/array:C语⾔提供了⼏个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下⾯列举了各函数的⽅法及其说明。
● itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将⽆符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五⼊。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含⼗进制⼩数点。
● fcvt():指定位数为转换精度,其余同ecvt()。
除此外,还可以使⽤sprintf系列函数把数字转换成字符串,其⽐itoa()系列函数运⾏速度慢2. string/array to int/floatC/C++语⾔提供了⼏个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。
● atof():将字符串转换为双精度浮点型值。
● atoi():将字符串转换为整型值。
● atol():将字符串转换为长整型值。
● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
● strtoul():将字符串转换为⽆符号长整型值,并报告不能被转换的所有剩余数字。
这⾥写⼀个常⽤的转换使⽤⽅式#include<stdio.h>#include<stdlib.h>void num_to_str(){int a = 10086;char buff[10] = {0};itoa(a,buff,10);//将a以10进制的形式写⼊buff中printf("%s\n", buff);}void str_to_num(){char *p = "10001";printf("%d\n", atoi(p));//atoi直接返回整形转换后的数据}int main(){num_to_str();str_to_num();return 0;}这⾥需要注意的是,atoi和itoa均为windows系统下stdlib.h⽂件内的库函数,因此,如果在Linux系统即使包含stdlib.h这个头⽂件,编译时仍然会提⽰这两个函数没有定义过。
数组字符型强制转成整形的方法
标题:数组字符型强制转成整形的方法导语:在程序设计中,经常会遇到将数组中的字符型数据转换为整形数据的需求。
本文将深入探讨数组字符型强制转成整形的方法,分析多种实用的解决方案,并就该主题展开讨论。
一、了解数组字符型数据在开始讨论数组字符型强制转成整形的方法之前,首先需要了解数组中的字符型数据。
数组中的字符型数据通常表示为字符串或字符数组,在程序设计中经常用来存储文本信息或特定格式的数据。
然而,有时候我们需要将这些字符型数据转换为整形数据,以便进行数值计算或其他操作。
二、常用的强制转换方法针对数组字符型数据转换为整形数据的需求,我们可以采用多种方法来实现:1. 使用循环遍历数组元素,逐个转换为整形数据。
这种方法简单直接,但对于大规模的数组操作可能效率较低。
2. 调用编程语言提供的内置函数或库函数,如atoi()函数、valueOf()方法等。
这些函数能够将字符型数据转换为整形数据,且通常具有一定的容错处理能力。
3. 借助正则表达式进行匹配和提取,将字符型数据中的数字部分转换为整形数据。
这种方法适用于数据格式较为复杂的情况,但需要对正则表达式有一定的了解和掌握。
4. 利用字符编码表进行转换,将字符型数据的ASCII码值转换为对应的整形数值。
这种方法在处理字符型数据时较为灵活,且能够处理各种字符编码格式。
三、实际案例分析为了更好地理解数组字符型强制转成整形的方法,我们可以通过实际案例进行深入分析和讨论。
假设我们有一个包含数字字符型数据的数组,需要将其转换为整形数据以进行求和操作。
我们可以选择使用内置函数atoi()来实现:```C#include <stdio.h>#include <stdlib.h>int main() {char str[] = "12345";int num = atoi(str);printf("The integer is: %d\n", num);return 0;}```通过调用atoi()函数,我们能够将字符型数据"12345"转换为整形数据12345,并在程序中进行进一步处理。
python中将整形转化为字符串的方法
Python中将整数转换为字符串有多种方法,本文将介绍几种常用的方法和技巧。
对于初学者来说,这是一个基本而且重要的知识点,希望通过本文的讲解,读者能够对这个问题有更加清晰的理解。
1. 使用str()函数最常见的方法是使用内置的str()函数将整数转换为字符串。
这个函数非常简单,只需要将整数作为参数传入即可,如下所示:```pythonnum = 123num_str = str(num)print(num_str)```这将打印出字符串"123"。
这种方法非常直观和易懂,在实际应用中也是最常用的。
2. 使用format()方法另一种常见的方法是使用字符串的format()方法。
这个方法可以在字符串中插入其他变量,并且可以指定格式。
通过使用"{}"作为占位符,我们可以将整数转换为字符串,如下所示:```pythonnum = 456num_str = "{}".format(num)print(num_str)```这同样会打印出字符串"456"。
这种方法可以在一些特定的字符串格式化场景中使用,但一般情况下使用str()函数更加简洁。
3. 使用字符串拼接还有一种方法是通过字符串拼接的方式将整数转换为字符串。
我们可以将整数与空字符串进行拼接,这样就会自动将整数转换为字符串,如下所示:```pythonnum = 789num_str = "" + str(num)print(num_str)```这同样会打印出字符串"789"。
这种方法虽然简单,但相对于str()函数来说,可读性不够好,因此在实际应用中使用较少。
4. 使用repr()函数最后一种方法是使用内置的repr()函数。
这个函数返回一个对象的字符串表示,通常用于调试和日志记录。
虽然它可以将整数转换为字符串,但在实际应用中并不常见。
c++字符位运算转整形
c++字符位运算转整形在C++中,可以使用位运算将字符转换为整数。
以下是一个简单的示例,展示如何将字符转换为整数:```cpp#include <iostream>int main() {char c = 'A';unsigned int num = 0;// 将字符的ASCII码转换为无符号整数num = static_cast<unsigned int>(c);std::cout << "字符" << c << " 对应的整数为: " << num << std::endl;// 如果需要将整数转换回字符,可以使用以下方法char converted_char = static_cast<char>(num);std::cout << "转换回字符为: " << converted_char << std::endl;return 0;}```在这个示例中,我们首先将字符转换为无符号整数,然后将整数转换回字符。
需要注意的是,这里的示例仅适用于单个字符。
如果需要处理多个字符,可以对字符数组进行类似的操作。
此外,如果需要对字符进行位运算,例如位与、位或、位异或等操作,可以将字符转换为整数后,使用位运算符进行操作。
例如:```cpp#include <iostream>int main() {char a = 'A';char b = 'B';unsigned int num1 = static_cast<unsigned int>(a);unsigned int num2 = static_cast<unsigned int>(b);// 位与操作unsigned int result = num1 & num2;std::cout << "位与结果为: " << result << std::endl;return 0;}```以上示例展示了如何将字符转换为整数,以及如何在整数上执行位运算。
整形转16进制字符串
整形转16进制字符串在计算机编程中,整形数据类型是最常用的数据类型之一。
而在某些情况下,我们需要将整形数据转换成16进制字符串。
本文将介绍如何将整形数据转换成16进制字符串,并提供几种不同的实现方式。
一、概述在计算机中,整形数据类型通常使用二进制表示。
而16进制是一种更加直观的表示方式,它可以将二进制数据转换成更短的字符串形式。
因此,在某些情况下,我们需要将整形数据转换成16进制字符串,以便于传输、存储或显示。
二、实现方式1. 使用sprintf函数在C语言中,可以使用sprintf函数将整形数据转换成16进制字符串。
sprintf函数的第一个参数是一个字符数组,用于存储转换后的字符串;第二个参数是格式化字符串,其中"%x"表示将整形数据转换成16进制格式;第三个参数是要转换的整形数据。
下面是一个示例代码:```c#include <stdio.h>int main() {int num = 255;char str[10];sprintf(str, "%x", num);printf("%s\n", str);return 0;}```输出结果为"ff",即255的16进制表示。
2. 使用stringstream类在C++中,可以使用stringstream类将整形数据转换成16进制字符串。
stringstream类是一个字符串流,可以像cout一样使用<<运算符将数据插入到流中,然后使用str()方法获取转换后的字符串。
下面是一个示例代码:```c++#include <iostream>#include <sstream>int main() {int num = 255;std::stringstream ss;ss << std::hex << num;std::string str = ss.str();std::cout << str << std::endl;return 0;}```输出结果同样为"ff"。
Qt中整形数组转换成字符串的问题
应项目的要求终于在一天中学会了把整型数组转换成QS tring,也算是小有成就的一天了。
由于还没发现怎么直接把整型数组转换成s tring类型,但是可以通过间接的方法来实现。
首先要实现在Q t中建立整型数组,Qt为我们提供了强大的功能函数,就像VC中的库函数,Qt中通过包含某些函数的头文件可以直接调用内置函数来帮我们实现一些较为复杂的运算,QVector头文件就包含了建立数组的函数。
具体的建立方法就是:QVector<int>vector(10)//这里的十是你要建立的数组的元素个数int *data=vector.data();//这个函数就是库函数了可以直接调用for(int i=0;i<10;++i)//动态的分配内存是个内存空间,建立一个包含10个数据的i nt 数组data[i]=2*i;//就这样数组就被建成了接下来就是要设置一个中间变量,至于为什么要设置到后来你们也就明白了,之前说了Qt没法实现直接把整型数组变成Qstrin g那咱们就一个一个的把i nt数据转换成字符串;可以设置一个变量a,让a=data[i](i根据自己的需要来进行选择性的改变),然后就是要进行int换st ring了:有两种方法:1.使用QString QString::number( long n, int base = 10 ) [static]如:long a = 63;QString s = QString::number(a, 10); // s == "63"QString t = QString::number(a, 16).toUpper(); // t == "3F"2.使用long a = 63;QString s = QString("%1").arg(a);这个其实网上有很多资料,但是他们并没有说明白我们怎么把数组间接的改编成字符串,按照这个方法无论给我什么数据我都可以以字符串的形式输出pain ter->drawtex t(横坐标,纵坐标,字符串变量(如上面的s,t));其实我是因为项目需要才这么写的,因为接口发来数据我要选择性的进行把数据输出,而不建立数组的话我就没有可选择的数据进行输出,而且要是不这么做的话就要自己建立数据库,所谓的数据库就是要把所有可能出现的数据全部以字符串的形式写在程序里,因为paint er->drawtex t(横坐标,纵坐标,字符串变量(如上面的s,t));是要现成的字符串的,这样写的话程序明显的就复杂很多了而且呆板,但根据我写的方法明显就简单多了。
C++实现十六进制字符串转换成int整形值的示例
C++实现⼗六进制字符串转换成int整形值的⽰例⼗六进制(简写为hex或下标16)在数学中是⼀种逢16进1的进位制。
⼀般⽤数字0到9和字母A到F(或a~f)表⽰,其中:A~F 表⽰10~15,这些称作⼗六进制数字。
开发中经常需要把16进制字符串转换成整形,写了个个代码供⼤家参考下:#include <stdio.h>#include <string.h>//字符转换成整形int hex2int(char c){if ((c >= 'A') && (c <= 'Z')){return c - 'A' + 10;}else if ((c >= 'a') && (c <= 'z')){return c - 'a' + 10;}else if ((c >= '0') && (c <= '9')){return c - '0';}}int main(){//⼗六进制字符串转换成整形const char* hexStr = "EFA0";int data[32] = {0};int count = 0;for (int i=0; i<strlen(hexStr); i+=2){int high = hex2int(hexStr[i]); //⾼四位int low = hex2int(hexStr[i+1]); //低四位data[count++] = (high<<4) + low;}//打印输出for (int i=0; i<strlen(hexStr)/2; i++){printf("%d ", data[i]);}return 1;}总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。
c语言整型转换成字符型
c语言整型转换成字符型1C语言整型转换成字符型C语言是一种流行的编程语言,能够对复杂的计算机应用进行编程。
由于C语言拥有许多不同的数据类型,因此可以有效地实现数据的处理和转换。
在C语言中,整型数据是一种常见的数据类型,能够存储一定范围内的整数,也就是整数值。
除此之外,字符型也是一种常用的数据类型,它用来存储单个字符,并以ASCII码表示。
有时候在需要对数据进行操作的情况下,需要将整型数据转换为字符型,这将为程序提供更多的可能性。
2整型转换成字符型的方法要实现C语言整型转换成字符型有不同的方法,最常见的方法就是使用C语言中内置的函数。
例如,可以使用sprintf函数将整型转换为字符型。
它的定义如下:`int sprintf(char*str,const char*format,...)`它应用在下面的样例中,转换整型变量a的值到字符变量str 中:`int a=50;char str[20];sprintf(str,"%d",a);`由于sprintf函数将数据存储为字符串,因此可以用这种方法对数据进行搜索和操作。
3整型转换成字符型的应用C语言整型转换成字符型的技术有许多应用,其中最常见的应用便是存储字符串数据。
即,将整形数据转换为字符串,以便能够存储多个字符串数据。
这种技术可用于存储定制的字符串,有助于搜索特定的字符串,如:名字、地址、电话号码等。
另外,整型转换成字符型也能够应用于输出字符串,如将整型变量a的值输出为字符串格式。
在这种情况下,把变量a以字符串格式输出到计算机屏幕上,可以使用这样的函数:`printf("%d",a);`这表明,整型转换成字符型技术在C语言中有着广泛的应用。
4结论C语言整型转换成字符型是常用的一种技术,可以有效地帮助程序员处理数据,增强程序的功能。
上述的方法可以用来将数据以字符串的形式存储,也可以用来输出字符串。
在C语言中,这种技术被广泛地使用,为程序的开发和更新提供了支持。
c语言字符串转整形
c语言字符串转整形C语言字符串转整型是一项十分基础而重要的操作,无论是在开发嵌入式系统还是进行普通软件开发,都会经常用到。
下面我们来看一下如何使用C语言将字符串转换成整型。
首先,我们需要了解字符串和整型的存储方式。
字符串是一个字符序列,可以用字符数组来存储。
而整型是一个数值,可以用4个字节的内存空间来存储。
C语言中提供了一个stdlib.h库函数atoi,可以将字符串转换成整型。
其函数原型如下:int atoi(const char *str);其中,str是我们要转换的字符串。
接下来,让我们看一下如何实现字符串转换成整型的功能。
1.首先,我们需要定义一个字符串变量,并将需要转换的字符串赋值给它。
char str[] = "12345";2.然后,我们需要调用atoi函数将字符串转换成整型。
int num = atoi(str);3.最后,我们可以使用printf函数输出转换后的整型。
printf("%d", num);上述代码将输出数字12345,因为atoi函数已经将字符串转换成了整型。
需要注意的是,如果将一个非数字的字符串传递给atoi函数,该函数将返回0。
因此,在使用atoi函数之前,我们需要确保字符串中只包含数字字符。
除了atoi函数,C语言中还提供了其他一些函数,例如strtol和sscanf,也可以用来将字符串转换成整型。
这些函数的使用方法略有不同,但它们的主要作用都是将字符串转换成整型。
在使用字符串转换成整型的函数时,我们需要注意以下几点:1.确保字符串中只包含数字字符。
2.当字符串中包含负数时,需要特殊处理。
3.当字符串中包含超出整型范围的数值时,需要进行错误处理。
总之,在C语言中,将字符串转换成整型是一项基础而重要的操作。
我们可以使用函数库中的函数来实现这个功能,也可以自己编写代码来进行转换。
在实际开发中,我们应该根据自己的需要进行选择,并且确保代码具有良好的可读性和健壮性。
C#基础类型转换和字符串常用方法
C#基础类型转换和字符串常⽤⽅法类型转换 1: 隐式转换 double a = 10; ⼩类型转⼤类型 2: 显⽰转换强制转换⼤类型转⼩类型 int a = int.Parse("字符串"); int b = (int)50.8; 将单字符强转成整形得到的是这个字符的ASCII编码 Parse() : 只能将字符串转变成对应的类型 字符串⼀定是对应的数字类型 ToString(): 将任意类型转变成字符串类型 Convert: 类型转换的⼀个类,通过它可以做任意基本类型的转换 举例:输⼊年龄 int age = int.Parse(Console.ReadLine()); int age = Convert.ToInt32(Console.ReadLine());字符串常⽤⽅法 1)字符串常⽤⽅法 Length:获取字符串长度,⽐如密码6位数 Equals:两个字符串是否相等,也可以⽤ == Replace:Replace(旧值,新值) ToUpper和ToLower:⼤⼩写字母转换 Substring(开始下标):从这个下标开始,⼀直到字符的末尾 Substring(开始下标, 长度):从这个下标开始,截取指定长度的字符串 Trim():去掉两端空格 TrimStart()和TrimEnd():去掉字符串中出现的第⼀个和最后⼀个字符。
不填参数表⽰去空格 IndexOf:字符或者字符串的下标位置,找不到则返回-1 ⽐如"tim_cheng@"中'@'和'.'的下标位置,"cheng"的下标位置 LastIndexOf: ⽐如截取路径中的⽂件名,E:\课件\字符串常⽤⽅法.txt 字符串中有转义字符\,可以在字符串前加@或者在转义字符前加上\ Split():分割字符串,⽐如"192.168.0.1",⽤'.'分割得到字符数组 Join:将数组⽤某字符或字符串联接起来(与split相反) string.Join(分隔符,数组) StartsWith:以...开头 EndsWith:以...结尾。
ASP中字符串 和数字之间的转换
转换为Long类型的Variant
整形……转字符形用:cstr()函数
字符形转整形用:cint()函数
字符形转长整形用:clng()函数
等等
可以自己查呀
如果安装了office,可以查找计算机上的vb*.chm帮助文件看“函数”就行了啊!
CBool Boolean任何有效的字符串或数值表达式。
ASP中字符串和數字之間的轉換
分別用什麼函數
Cint
Cstr
Clng
不用函数数字都可以转字符串
字符串转数字
用CInt()
javascript:
parseInt
parseFloat
obj.toString()
cstr
cstr()转为字符串
先用isnumberic函数判断
CByte Byte 0至255。
CCur Currency -922,337,203,685,477.5808至922,337,203,685,477.5807。
CDate Date任何有效的日期表达式。
CDbl Double负数从-1.79769313486232E308至-4.94065645841247E-324;正数从4.94065645841247E-324至1.79769313486232E308。
CInt Integer -32,768至32,767,小数部分四舍五入。
CLng Long -2,147,483,648至2,147,483,647,小数部分四舍五入。
CSng Single负数为-3.402823E38至-1.401298E-45;正数为1.401298E-45至3.402823E38。
parseintparsefloatobjtostringcstr转换成字符串cint转换成数字cint转为数字cstr转为字符串先用isnumberic函数判断clng转换为long类型的variant整形
数字字符串转化成整形数或实行数
数字字符串转化成整形数或实行数#include <iostream.h>#include <stdio.h>#include <string.h>double strtof(char *p);int strtoi(char *p);char *ftostr(double a);char *itostr(int d);void main(){char *p;cout<<strtoi("-12345")<<endl; //转化为整数printf("%.10f\n",strtof("-12345.205")); //转化为浮点数p=ftostr(-12.34); //浮点数转化为字符串cout<<p<<endl;delete []p;p=itostr(-123456); //整数转化为字符串cout<<p<<endl;delete []p;}double strtof(char *p){ double a,d=0,w=10;int i=0,t=1;if(p[i]=='+'){ t=1;i++;}if(p[i]=='-'){ t=-1;i++;}while(p[i]!='\0' && p[i]!='.'){ if(p[i]<'0' || p[i]>'9'){ cout<<i<<" !!!!"<<endl;return 0;}d=d*10+p[i]-'0';i++;}if(p[i]=='.') i++;a=d;d=0;while(p[i]!='\0'){ if(p[i]<'0' || p[i]>'9'){ cout<<i<<" !!!!"<<endl;return 0;}d=d+(p[i]-'0')/w;i++;w=w*10;}a=(a+d)*t;return a;}int strtoi(char *p){ int d=0,i=0,t=1;if(p[i]=='+'){ t=1;i++;}if(p[i]=='-'){ t=-1;i++;}while(p[i]!='\0'){ if(p[i]<'0' || p[i]>'9'){ cout<<"!!!!"<<endl;return 0;}d=d*10+p[i]-'0';i++;}return d*t;}char *ftostr(double a){ int in,t,w,i=0;double fn;char s[100],*p=s,ch;if(a<0){ a=-a;t=1;}else{ t=0;}in=(int)a;fn=a-in;do{p[i]=in%10+'0';i++;in=in/10;}while(in!=0);w=i;p[i++]='.';int k=1;while(fn!=0 && k<16){fn=fn*10;in=(int)fn;p[i++]=in+'0';fn=fn-in;k++;}p[i]='\0';for(i=0;i<w/2;i++){ ch=p[i];p[i]=p[w-i-1];p[w-i-1]=ch;}p=new char[strlen(s)+2];if(t==1)strcpy(p,"-");strcat(p,s);return p;}char *itostr(int d){char *p;int w=1,i=0,t=d;while(t!=0){w=w*10;i++;t=t/10;}p=new char[i+2];i=0;if(d<0){ p[i++]='-';d=-d;}while(w>1){ w=w/10;p[i++]=d/w+'0';d=d%w;}p[i]='\0';return p;}字符串添加到类/下面提供两种查找子串程序,选择一种方法为Mystr类添加查找子串成员函数//并编写一个删除子串的成员函数//查找子串方法1#include <stdio.h>void main(){char *s="abcdefghijk",*t="def";int i,j,k,m=-1;for(i=0;s[i]!='\0';i++){ k=i;for(j=0;t[j]!='\0' && s[k]!='\0' && s[k++]==t[j];j++);if(t[j]=='\0'){ m=i;break;}}printf("%d\n",m);//没找到输出-1}//查找子串方法2#include <stdio.h>void main(){char *s="abcdefghijk",*t="def";int i=0,j=0,m=0;while(s[i]!='\0' && t[j]!='\0'){ if(s[i] == t[j]){ i++;j++;}else{ m++;i=m;j=0;}}if(t[j]!='\0')m=-1;printf("%d\n",m);}//getlinestr()函数可以输入一行任意长度字符串,必须用回车键结束#include <stdio.h>char *getlinestr();void main(){char *pstr;pstr=getlinestr();printf("%s",pstr);delete []pstr;}char *getlinestr(){ char x,*p,*pok;int len=0;x=getchar();p=new char('\0');while(x!='\n'){ len++;pok=new char[len+1];strcpy(pok,p);pok[len-1]=x;pok[len]='\0';delete []p;p=pok;x=getchar();}return pok;}//练习题:编写下面两个函数,将数字字符串转换为整型数或实型数//将两个函数加入到Mystr类#include <iostream.h>double strtof(char *p);int strtoi(char *p);void main(){char *p1="123.45",*p2="-12345",*p3="0x12b.5";cout<<strtof(p1)<<endl;cout<<strtoi(p2)<<endl;cout<<strtof(p3)<<endl;}*///字符串连接函数#include "iostream.h"#include "string.h",赋值运算符重载class Mystr{ public:Mystr(); //缺省构造函数Mystr(char *p); //带指针参数的构造函数Mystr(Mystr& a); //拷贝构造函数void display(); //字符串输出函数~Mystr(){ delete str; } //析构函数int getlen(); //求字符串长度void Cpy(char *p); //字符串拷贝,字符型指针参数void Cpy(Mystr &x); //字符串拷贝,对象引用参数/关注下面字符串连接函数,赋值运算符重载void Cat(char *p);void Cat(Mystr &x);void operator =(Mystr &x);void operator =(char *p);private:char *str; //字符串数据指针};void Mystr::Cat(char *p){char *s;s=new char[strlen(this->str)+strlen(p)+1];strcpy(s,this->str);strcat(s,p);delete this->str;this->str=s;}void Mystr::Cat(Mystr &x){char *p;p=new char[strlen(this->str)+strlen(x.str)+1];strcpy(p,this->str);strcat(p,x.str);delete this->str;this->str=p;}void Mystr::operator =(Mystr &x){ char *p;p=new char[x.getlen()+1];if(p==NULL){cout<<"!!!!"<<endl;return;}strcpy(p,x.str);delete str;str=p;}void Mystr::operator =(char *s){ char *p;p=new char[strlen(s)+1];if(p==NULL){cout<<"!!!!"<<endl;return;}strcpy(p,s);delete str;str=p;}int Mystr::getlen(){ int n=0;while(str[n]!='\0')n++;return n;}void Mystr::Cpy(char *p){ int n=0;delete str;while(p[n++]);str=new char[n];n=0;while(str[n]=p[n])n++;}void Mystr::Cpy(Mystr &x) { int k=0;delete str;str=new char[x.getlen()+1];while(str[k]=x.str[k])k++; }void Mystr::display(){cout<<str<<endl;}Mystr::Mystr(){str=new char('\0');}Mystr::Mystr(char *p){int n=strlen(p);str=new char[n+1];strcpy(str,p);}Mystr::Mystr(Mystr& a){int n=strlen(a.str);str=new char[n+1];strcpy(str,a.str);}void main(){ Mystr t1("abcd"),t2("12345");t1.Cat(t2); //Mystr类做参数t1.display();t2.Cat("999"); //字符串常量做参数t2.display();char x[]="00000";t2.Cat(x);t2.display();}求字符串长度函数Getlen,两个字符串拷贝重载函数Cpy #include "iostream.h"#include "string.h"class Mystr{ public:Mystr(); //缺省构造函数Mystr(char *p); //带指针参数的构造函数Mystr(Mystr& a); //拷贝构造函数void display(); //字符串输出函数~Mystr(){ delete str; } //int getlen(); //void Cpy(char *p); //字符串拷贝,字符型指针参数void Cpy(Mystr &x); //字符串拷贝,对象引用参数private:char *str; //字符串数据指针};int Mystr::getlen(){ int n=0;while(str[n]!='\0')n++;return n;}void Mystr::Cpy(char *p){ int n=0;delete str;while(p[n++]);str=new char[n];n=0;while(str[n]=p[n])n++;}void Mystr::Cpy(Mystr &x){ int k=0;delete str;str=new char[x.getlen()+1];while(str[k]=x.str[k])k++;}void Mystr::display(){cout<<str<<endl;}Mystr::Mystr(){str=new char('\0');}Mystr::Mystr(char *p){int n=strlen(p);str=new char[n+1];strcpy(str,p);}Mystr::Mystr(Mystr& a){int n=strlen(a.str);str=new char[n+1];strcpy(str,a.str);}void main(){ Mystr t1("abcd"),t2;t2.Cpy(t1); //Mystr类做参数t2.display();t2.Cpy("999"); //字符串常量做参数t2.display();}+运算符重载,输出流运算符《《重载#include "iostream.h"#include "string.h"class Mystr{ public:Mystr();Mystr(char *p);Mystr(Mystr& a);void display();~Mystr(){ delete str; }int getlen();void Cpy(char *p);void Cpy(Mystr &x);void Cat(char *p);void Cat(Mystr &x);void operator =(Mystr &x);void operator =(char *p);//+运算符重载为友元,可以类外使用friend Mystr operator +(Mystr c1,Mystr c2);/输入输出流运算符重载必须为友元,第一个参数必须是输入输出对象的引用,返回值必为输入输出流对象friend ostream & operator << (ostream & out,Mystr& d){out<<d.str;return out;} private:char *str; //字符串数据指针};Mystr operator +(Mystr c1,Mystr c2){ Mystr p;p.str=new char[c1.getlen()+c2.getlen()+1];p.Cpy(c1);p.Cat(c2);return p;}void Mystr::Cat(char *p){char *s;int n1=0,n2=0;while(str[n1])n1++;while(p[n2])n2++;s=new char[n1+n2+1];n1=0;n2=0;while(str[n1]){s[n1]=str[n1];n1++;}while(s[n1++]=p[n2++]);delete str;str=s;}void Mystr::Cat(Mystr &x){char *p;p=new char[strlen(this->str)+strlen(x.str)+1];strcpy(p,this->str);strcat(p,x.str);delete this->str;this->str=p;}void Mystr::operator =(Mystr &x){ char *p;p=new char[x.getlen()+1];if(p==NULL){cout<<"!!!!"<<endl;return;}strcpy(p,x.str);delete str;str=p;}void Mystr::operator =(char *s){ char *p;p=new char[strlen(s)+1];if(p==NULL){cout<<"!!!!"<<endl;return;}strcpy(p,s);delete str;str=p;}int Mystr::getlen(){ int n=0;while(str[n]!='\0')n++;return n;}void Mystr::Cpy(char *p){ int n=0;delete str;while(p[n++]);str=new char[n];n=0;while(str[n]=p[n])n++;}void Mystr::Cpy(Mystr &x){ int k=0;delete str;str=new char[x.getlen()+1];while(str[k]=x.str[k])k++;}void Mystr::display(){cout<<str<<endl;}Mystr::Mystr(){str=new char('\0');}Mystr::Mystr(char *p){int n=strlen(p);str=new char[n+1];strcpy(str,p);}Mystr::Mystr(Mystr& a){int n=strlen(a.str);str=new char[n+1];strcpy(str,a.str);}void main(){ Mystr t1("abcd"),t2("12345"),t3;t3=t1+t2;t3.display();t3="00000"+t3; //非Mystr类“00000”调用+运算符cout<<t3<<endl; /Mystr类对象t3}程序#include "iostream.h"#include "string.h"class Mystr{ public:Mystr();Mystr(char *p);Mystr(Mystr& a);void display();~Mystr(){ delete str; }void Cat(char *p);// void Cat(Mystr x);void Cat(Mystr &x);void operator =(Mystr &x);void operator =(char *p);int getlen();// void operator +(Mystr &x);friend Mystr operator +(Mystr c1,Mystr c2);friend ostream & operator << (ostream & out,Mystr& d){out<<d.str;return out;}private:char *str;};void Mystr::operator =(Mystr &x){ char *p;p=new char[x.getlen()+1];if(p==NULL){cout<<"!!!!"<<endl;return;}strcpy(p,x.str);delete str;str=p;}void Mystr::operator =(char *s){ char *p;p=new char[strlen(s)+1];if(p==NULL){cout<<"!!!!"<<endl;return;}strcpy(p,s);delete str;str=p;}int Mystr::getlen(){ int n=0;char *p=str;while(*p++)n++;return n;}/*void Mystr::operator +(Mystr &x){ char *s;s=new char[strlen(str)+strlen(x.str)+1];strcpy(s,str);strcat(s,x.str);delete str;str=s;}*/Mystr operator +(Mystr c1,Mystr c2){ Mystr p;char *s;s=new char[strlen(c1.str)+strlen(c2.str)+1];strcpy(s,c1.str);strcat(s,c2.str);p.str=s;return p;}/*void Mystr::Cat(Mystr x){ char *p;p=new char[strlen(this->str)+strlen(x.str)+1];strcpy(p,this->str);strcat(p,x.str);delete this->str;this->str=p;}*/void Mystr::Cat(char *p){char *s;s=new char[strlen(this->str)+strlen(p)+1];strcpy(s,this->str);strcat(s,p);delete this->str;this->str=s;}void Mystr::Cat(Mystr &x){char *p;p=new char[strlen(this->str)+strlen(x.str)+1];strcpy(p,this->str);strcat(p,x.str);delete this->str;this->str=p;}void Mystr::display(){cout<<str<<endl;}Mystr::Mystr(){str=new char('\0');}Mystr::Mystr(char *p){int n=strlen(p);str=new char[n+1];strcpy(str,p);cout<<"char *p "<<endl; }Mystr::Mystr(Mystr& a){int n=strlen(a.str);str=new char[n+1];strcpy(str,a.str);cout<<"copy..."<<endl;}void main(){ Mystr t1("abcd");cout<<t1<<"okok"<<endl;Mystr t2(t1);t1.display();t2.display();t1.Cat(t2);t1.display();char *a="8888";t2.Cat(a);t2.display();t2.Cat("999");t2.display();Mystr t3;t3="t1t1t1";t3.display();cout<<t3.getlen()<<endl;t3="tttt2"+t2+t1;t3.display();}。
对Java字符串与整形、浮点类型之间的相互转换方法总结
Long.parseLong(String s); Float.parseFloat(String s); Double.parseDouble(String s) //方法二 int a = Integer.valueOf(s).intValue();
不同之处:Integer.parseInt(String s)生成的是一个整形;
Integer.valueOf(s).intValu字符串
int i=11; //方法一 String s=i+""; //方法二 String s=String.valueOf(i); //方法三 String s=Integer.toString(i);
今天去官网查看springboot资料时在特性中看见了系统的事件及监听章节所以下面这篇文章主要给大家介绍了关于springboot事件发布和监听的相关资料文中通过实例代码介绍的非常详细需要的朋友可以参考下
对 Java字符串与整形、浮点类型之间的相互转换方法总结
1、字符串转化为整形、浮点类型
String s = "100"; //方法一 int a = Integer.parseInt(String s);
将整数类型转化为字符串的方法
将整数类型转化为字符串的方法将整数类型转化为字符串是编程中常用的操作。
在很多场景下,我们需要将整数转化为字符串,比如在输出和保存数据时,或者进行字符串拼接等操作。
本文将介绍几种常用的方法来实现这个转化过程。
方法一:使用字符串拼接操作符我们可以使用字符串拼接操作符将整数转化为字符串。
具体步骤如下:1. 定义一个整数变量,例如num;2. 将整数变量转化为字符串,可以使用加号操作符将整数与空字符串相加,即将整数隐式转化为字符串类型。
示例代码如下:```int num = 123;String str = num + "";System.out.println(str);```上述代码将整数123转化为字符串"123"并输出。
方法二:使用Integer类的toString()方法除了使用字符串拼接操作符,我们还可以使用Integer类的toString()方法将整数转化为字符串。
具体步骤如下:1. 定义一个整数变量,例如num;2. 使用Integer类的toString()方法将整数转化为字符串,该方法接受一个整数作为参数,并返回对应的字符串表示。
示例代码如下:```int num = 123;String str = Integer.toString(num);System.out.println(str);```上述代码同样将整数123转化为字符串"123"并输出。
方法三:使用String类的valueOf()方法除了Integer类的toString()方法,我们还可以使用String类的valueOf()方法将整数转化为字符串。
具体步骤如下:1. 定义一个整数变量,例如num;2. 使用String类的valueOf()方法将整数转化为字符串,该方法接受一个整数作为参数,并返回对应的字符串表示。
示例代码如下:```int num = 123;String str = String.valueOf(num);System.out.println(str);```上述代码同样将整数123转化为字符串"123"并输出。
十六进制字符串转整形
十六进制字符串转整形十六进制字符串转整形是一种将十六进制数字字符串表示的数字转换为整数的方法。
在计算机编程中,它非常常见,因为计算机使用二进制数字表示数字,但十六进制具有更好的可读性和易于记忆。
要将十六进制字符串转换为整数,可以使用许多不同的方法。
一种常见的方法是使用计算机语言中提供的函数或库。
例如,在Python中,可以使用int()函数将十六进制字符串转换为整数,如下所示:hex_str = "16"int_val = int(hex_str, 16)print(int_val)这将输出16,因为它将十六进制字符串“16”转换为整数16。
在许多其他编程语言中,也存在类似的函数或库,可以执行类似的操作。
例如,在C ++中,可以使用stoi()函数将十六进制字符串转换为整数,如下所示:string hex_str = "16";int int_val = stoi(hex_str, nullptr, 16);cout << int_val;这将输出16,因为它将十六进制字符串“16”转换为整数16。
除了使用内置函数或库之外,还可以手动执行十六进制字符串到整数的转换。
一种常见的方法是将每个十六进制数字字符转换为对应的数字值,并将其乘以16的适当次幂,最终将它们相加。
例如,考虑将十六进制字符串“1A2B”转换为整数。
可以执行以下步骤:1. 将每个十六进制数字字符转换为对应的数字值:'1' -> 1'A' -> 10'2' -> 2'B' -> 112. 对每个数字值乘以16的适当次幂:1 * 16^3 + 10 * 16^2 + 2 * 16^1 + 11 * 16^03. 将每个项相加来获得结果:1 * 16^3 + 10 * 16^2 + 2 * 16^1 + 11 * 16^0 = 6683因此,将十六进制字符串“1A2B”转换为整数将产生数字6683。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
整型和字符串相互转换itoa功能:把一整数转换为字符串用法:char *itoa(int value, char *string, int radix);详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.参数:value: 待转化的整数。
radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
* string: 保存转换后得到的字符串。
返回值:char * : 指向生成的字符串,同*string。
备注:该函数的头文件是"stdlib.h"程序例:#include <stdlib.h>#include <stdio.h>int main(){int number = 123456;char string[25];itoa(number, string, 10);printf("integer = %d string = %s\n", number, string);return 0;}注释:编译系统:VC++6.0,TC不支持。
atoiC语言库函数名: atoi功能: 把字符串转换成整型数.名字来源:array to integer 的缩写.函数说明: atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结束符\0 时停止转换,返回整型数。
原型: int atoi(const char *nptr);需要用到的头文件: #include <stdlib.h>程序例:1)#include <stdlib.h>#include <stdio.h>int main(){int n;char *str = "12345.67";n = atoi(str);printf("string = %s integer = %d\n", str, n);return 0;}执行结果string = 12345.67 integer = 123452)#include <stdlib.h>#include <stdio.h>int main(){char a[] = "-100" ;char b[] = "123" ;int c ;c = atoi( a ) + atoi( b ) ;printf("c = %d\n", c) ;return 0;}执行结果c = 23sprintfsprintf 将字串格式化。
在头文件#include<stdio.h>中语法: string sprintf(string format, mixed [args]...);传回值: 字串1. 处理字符方向。
-负号时表时从后向前处理。
2. 填空字元。
0 的话表示空格填0;空格是内定值,表示空格就放着。
3. 字符总宽度。
为最小宽度。
4. 精确度。
指在小数点后的浮点数位数。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-转换字符=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-% 印出百分比符号,不转换。
b 整数转成二进位。
c 整数转成对应的ASCII 字元。
d 整数转成十进位。
f 倍精确度数字转成浮点数。
o 整数转成八进位。
s 整数转成字串。
x 整数转成小写十六进位。
X 整数转成大写十六进位。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-$money = 123.1$formatted = sprintf ("%06.2f", $money); // 此时变数$ formatted 值为"123.10"$formatted = sprintf ("%08.2f", $money); // 此时变数$ formatted 值为"00123.10"$formatted = sprintf ("%-08.2f", $money); // 此时变数$ formatted 值为"123.1000"$formatted = sprintf ("%.2f%%", 0.95 * 100); // 格式化为百分比?>¢%08.2f解释:%开始符0是"填空字元" 表示,如果长度不足时就用0来填满。
6格式化后总长度2f小数位长度,即2位¢第4行值为"00123.10" 解释:因为2f是(2位)+小数点符号(1)+前面123(3位)=6位,总长度为8位,故前面用[填空字元]0表示,即00123.10¢第4行值为"-123.1000" 解释:-号为反向操作,然后填空字元0添加在最后面了在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。
由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。
这也导致sprintf 比printf 有用得多。
sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ... );除了前两个参数类型固定外,后面可以接任意多个参数。
而它的精华,显然就在第二个参数:格式化字符串上。
printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
格式化数字字符串sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代如://把整数123 打印成一个字符串保存在s 中。
sprintf(s, "%d", 123); //产生"123"可以指定宽度,不足的左边补空格:sprintf(s, "%8d%8d", 123, 4567); //产生:" 123 4567"当然也可以左对齐:sprintf(s, "%-8d%8d", 123, 4567); //产生:"123 4567"也可以按照16 进制打印:sprintf(s, "%8x", 4567); //小写16 进制,宽度占8 个位置,右对齐sprintf(s, "%-8X", 4568); //大写16 进制,宽度占8 个位置,左对齐这样,一个整数的16 进制字符串就很容易得到,但我们在打印16 进制内容时,通常想要一种左边补0 的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0 就可以了。
sprintf(s, "%08X", 4567); //产生:"000011D7"上面以”%d”进行的10 进制打印同样也可以使用这种左边补0 的方式。
这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1 的内存16 进制表示形式,在Win32 平台上,一个short 型占2 个字节,所以我们自然希望用4 个16 进制数字来打印它:short si = -1;sprintf(s, "%04X", si);产生“FFFFFFFF”,怎么回事?因为spritnf 是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底是个4 字节的整数还是个2 字节的短整数,所以采取了统一4 字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32 位的整数-1,打印时4 个位置不够了,就把32 位整数-1 的8 位16 进制都打印出来了。
如果你想看si 的本来面目,那么就应该让编译器做0 扩展而不是符号扩展(扩展时二进制左边补0 而不是补符号位):sprintf(s, "%04X", (unsigned short)si);就可以了。
或者:unsigned short si = -1;sprintf(s, "%04X", si);sprintf 和printf 还可以按8 进制打印整数字符串,使用”%o”。
注意8 进制和16 进制都不会打印出负数,都是无符号的,实际上也就是变量的内部编码的直接的16 进制或8 进制表示。
控制浮点数打印格式浮点数的打印和格式控制是sprintf 的又一大常用功能,浮点数使用格式符”%f”控制,默认保留小数点后6 位数字,比如:sprintf(s, "%f", 3.1415926); //产生"3.141593"但有时我们希望自己控制打印的宽度和小数位数,这时就应该使用:”%m.nf”格式,其中m 表示打印的宽度,n 表示小数点后的位数。
比如:sprintf(s, "%10.3f", 3.1415626); //产生:" 3.142"sprintf(s, "%-10.3f", 3.1415626); //产生:"3.142 "sprintf(s, "%.3f", 3.1415626); //不指定总宽度,产生:"3.142"注意一个问题,你猜int i = 100;sprintf(s, "%.2f", i);会打出什么东东来?“100.00”?对吗?自己试试就知道了,同时也试试下面这个:sprintf(s, "%.2f", (double)i);第一个打出来的肯定不是正确结果,原因跟前面提到的一样,参数压栈时调用者并不知道跟i相对应的格式控制符是个”%f”。
而函数执行时函数本身则并不知道当年被压入栈里的是个整数,于是可怜的保存整数i 的那4 个字节就被不由分说地强行作为浮点数格式来解释了,整个乱套了。