char*到long如何转换
发布网友
发布时间:2022-04-15 01:32
我来回答
共6个回答
热心网友
时间:2022-04-15 03:02
char*到long的转换可以通过字符串的首地址来实现。
itoa ltoa ultoa 这3个函数在头文件 <stdlib.h>中
其原形:
char *itoa(int value,char *string,int radix)
cahr *ltoa(long value,char *string,int radix)
char *ultoa(unsigned long value,char *string,int radix)
value 要转换的数。
String 字符串结果。
Radix value的基数。
显然易见:
i为int,l为long,ul为unsigned long。
数字不大时,用错了基本没影响。
说明:
此类函数是把 value转换成一个以空格结尾的字符串,并存储在string中(至多33个字节),不执行上溢出检查。
radix指出value的基数,radi 必须在2-36的范围内。
例:
#include <stdlib.h>
#Include <stdio.h>
void main( void )
{
char buffer[20];
int i = 3445;
long l = -344115;
unsigned long ul = 1234567890;
itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s/n", i, buffer );
itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s/n", i, buffer );
itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s/n", i, buffer );
ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 10): 0x%s/n", l, buffer );
ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 10): 0x%s/n", ul, buffer );
}
输出
String of integer 3445 (radix 10): 3445
String of integer 3445 (radix 16): 0xd75
String of integer 3445 (radix 2): 110101110101
String of long int -344115 (radix 10): 0xfffabfcd
String of unsigned long 1234567890 (radix 16): 0x499602d2
热心网友
时间:2022-04-15 04:20
strtol(将字符串转换成长整型数)
相关函数
atof,atoi,atol,strtod,strtoul
表头文件
#include
定义函数
long
int strtol(const char *nptr,char **endptr,int base);
函数说明
strtol
()会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如
base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符则会使用
16进制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
返回值
返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。
附加说明
ERANGE指定的转换字符串超出合法范围。
范例
#include
main()
{
char
a[]=”1000000000”;
char b[]=”1000000000”;
char
c[]=”ffff”;
printf(“a=%d\n”,strtol(a,NULL,10));
printf(“b=%d\n”,strtol(b,NULL,2));
printf(“c=%d\n”,strtol(c,NULL,16));
}
执行
a=1000000000
b=512
c=65535
strtoul(将字符串转换成无符号长整型数)
相关函数
atof,atoi,atol,strtod,strtol
表头文件
#include
定义函数
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字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
返回值
返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。
附加说明
ERANGE指定的转换字符串超出合法范围。
参考strtol()
#include
main()
{
char
s[]=”aBcDeFgH12345;!#$”;
int i;
printf(“before toupper() :
%s\n”,s);
for(i=0;I
s=toupper(s);
printf(“after toupper() :
%s\n”,s);
}
执行
before toupper() : aBcDeFgH12345;!#$
after toupper()
: ABCDEFGH12345;!#$
对于int转为string或者char
char s[10];
string str;
int i;
itoa(i,s,10);//这是在windows下使用的函数
str=s;
第二种普遍使用的方法是
char *s;
string str
int i;
sprintf(s,"%d",i);
str=s;
string转化为long
要使用char*作为中间过渡
string.c_str()转化为char*,然后使用sscanf()将char*转化为long
热心网友
时间:2022-04-15 05:54
n = (long)c; 字符串的首地址
n = *(long *)c; 将c数组前32位卡下来作为long的值
热心网友
时间:2022-04-15 07:46
存储内容本身未变
只是解释方式变了
c数组中每个字符实际上为4字节的2进制数
将c数组前32位卡下来作为long的值
热心网友
时间:2022-04-15 09:54
通过函数来转换的
printf输出函数
热心网友
时间:2022-04-15 12:18
字符串的首地址