请教:C语言中如何将一字符串转换成无符号整型?

时间:2022-01-11 01:17:56
例如:
char sz[4];
strcpy(sz,"abs3");
unsigned int ui;
如何将sz数组里的字符串付给ui?
我不会啊!!那位大虾帮帮忙??

16 个解决方案

#1


atoi()

#2


ui=*((unsigned int *)sz);
或者干脆memcpy(&ui,sz,4);

#3


memcpy

#4


atoi 结果是0
memcpy结果是863199841
不知道楼主是想直接把abs3赋值到ui里,还是把它的各个字符的asc码加起来赋过去。。。

#5


函数名称:     atoi
函数原型:     int atoi(char *str)
函数功能:     将字符串转换成一个整数值
函数返回:     转换后的数值
参数说明:     str-待转换为整型数的字符串
所属文件:     <stdlib.h>

#include <stdlib.h>
#include <stdio.h>
int main()
{
    int n;
    char *str ="12345.67";
    n=atoi(str);
    printf("string=%s integer=%d",str,n);
    return 0;
}

#6


函数名称:     atol
函数原型:     long atol(char *str)
函数功能:     将字符串转换成一个长整数
函数返回:     转换后的数值
参数说明:     str-待转换为长整型的字符串
所属文件:     <stdlib.h>

#include <stdlib.h>
#include <stdio.h>
int main()
{
    long l;
    char *str ="98765432";
    l=atol(lstr);
    printf("string=%s integer=%ld",str,l);
    return(0);
}

#7


函数名称:     strtol
函数原型:     long strtol(const char *s,char **endptr,int radix)
函数功能:     将数值字符串转换成长整形格式数
函数返回:     长整形转换结果
参数说明:     s-待转换的浮点字符串,radix-转换的数制,endptr-转换后的尾数字符串
所属文件:     <stdlib.h>

#include <stdlib.h>
#include <stdio.h>
int main()
{
    char *string="87654321",*endptr;
    long lnumber;
    lnumber=strtol(string,&endptr,10);
    printf("string=%s long=%ld",string,lnumber);
    return 0;
}

#8


kankan

#9


任意选用一个就是了,
注意数据范围。

另外注意字符串需要是可以转化的,
"abs3" 其实 s 属于不可转换的字符, a  b 可以在 16进制控制下被转换,
但是由于s的存在, 后面的内容就被丢弃了

char *string="abs3",*endptr;
long lnumber;
lnumber=strtol(string,&endptr,16);
printf("string=%s long=%lx",string,lnumber);

#10


我需要的结果是863199841,谢谢各位大虾!!
结帖啦

#11


可是还有问题:
如果
char sz[10];
strcpy(sz,"1001abs3");
unsigned int ui;
用memcpy时,只能将前面1001赋给ui,已经占了4个字节,怎么办?

#12


对于  
char  sz[10];  
strcpy(sz,  "1001abs3");  
unsigned  int  ui;  
用memcpy时,ui得值是82524169,但在内存中是31 30 30 31,只能将前面1001赋给ui,已经占了4个字节,怎么办?我想将"1001abs3"在内存中占四个字节,能行吗?

#13


strtoul

#14


向 jixingzhong(瞌睡虫·星辰)  学习!

#15


学习

#16


这为大哥解决了我的问题哦
引用 6 楼 jixingzhong 的回复:
函数名称:           atol
函数原型:           long   atol(char   *str)
函数功能:           将字符串转换成一个长整数
函数返回:           转换后的数值
参数说明:           str-待转换为长整型的字符串
所属文件:           <stdlib.h>

#include   <stdlib.……

#1


atoi()

#2


ui=*((unsigned int *)sz);
或者干脆memcpy(&ui,sz,4);

#3


memcpy

#4


atoi 结果是0
memcpy结果是863199841
不知道楼主是想直接把abs3赋值到ui里,还是把它的各个字符的asc码加起来赋过去。。。

#5


函数名称:     atoi
函数原型:     int atoi(char *str)
函数功能:     将字符串转换成一个整数值
函数返回:     转换后的数值
参数说明:     str-待转换为整型数的字符串
所属文件:     <stdlib.h>

#include <stdlib.h>
#include <stdio.h>
int main()
{
    int n;
    char *str ="12345.67";
    n=atoi(str);
    printf("string=%s integer=%d",str,n);
    return 0;
}

#6


函数名称:     atol
函数原型:     long atol(char *str)
函数功能:     将字符串转换成一个长整数
函数返回:     转换后的数值
参数说明:     str-待转换为长整型的字符串
所属文件:     <stdlib.h>

#include <stdlib.h>
#include <stdio.h>
int main()
{
    long l;
    char *str ="98765432";
    l=atol(lstr);
    printf("string=%s integer=%ld",str,l);
    return(0);
}

#7


函数名称:     strtol
函数原型:     long strtol(const char *s,char **endptr,int radix)
函数功能:     将数值字符串转换成长整形格式数
函数返回:     长整形转换结果
参数说明:     s-待转换的浮点字符串,radix-转换的数制,endptr-转换后的尾数字符串
所属文件:     <stdlib.h>

#include <stdlib.h>
#include <stdio.h>
int main()
{
    char *string="87654321",*endptr;
    long lnumber;
    lnumber=strtol(string,&endptr,10);
    printf("string=%s long=%ld",string,lnumber);
    return 0;
}

#8


kankan

#9


任意选用一个就是了,
注意数据范围。

另外注意字符串需要是可以转化的,
"abs3" 其实 s 属于不可转换的字符, a  b 可以在 16进制控制下被转换,
但是由于s的存在, 后面的内容就被丢弃了

char *string="abs3",*endptr;
long lnumber;
lnumber=strtol(string,&endptr,16);
printf("string=%s long=%lx",string,lnumber);

#10


我需要的结果是863199841,谢谢各位大虾!!
结帖啦

#11


可是还有问题:
如果
char sz[10];
strcpy(sz,"1001abs3");
unsigned int ui;
用memcpy时,只能将前面1001赋给ui,已经占了4个字节,怎么办?

#12


对于  
char  sz[10];  
strcpy(sz,  "1001abs3");  
unsigned  int  ui;  
用memcpy时,ui得值是82524169,但在内存中是31 30 30 31,只能将前面1001赋给ui,已经占了4个字节,怎么办?我想将"1001abs3"在内存中占四个字节,能行吗?

#13


strtoul

#14


向 jixingzhong(瞌睡虫·星辰)  学习!

#15


学习

#16


这为大哥解决了我的问题哦
引用 6 楼 jixingzhong 的回复:
函数名称:           atol
函数原型:           long   atol(char   *str)
函数功能:           将字符串转换成一个长整数
函数返回:           转换后的数值
参数说明:           str-待转换为长整型的字符串
所属文件:           <stdlib.h>

#include   <stdlib.……