您的位置:程序门 -> c/c++ ->



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


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教:c语言中如何将一字符串转换成无符号整型?
发表于:2007-05-09 01:01:10 楼主
例如:
char   sz[4];
strcpy(sz, "abs3 ");
unsigned   int   ui;
如何将sz数组里的字符串付给ui?
我不会啊!!那位大虾帮帮忙??
发表于:2007-05-09 01:30:291楼 得分:0
atoi()
发表于:2007-05-09 02:20:322楼 得分:0
ui=*((unsigned   int   *)sz);
或者干脆memcpy(&ui,sz,4);
发表于:2007-05-09 08:32:213楼 得分:0
memcpy
发表于:2007-05-09 08:44:484楼 得分:0
atoi   结果是0
memcpy结果是863199841
不知道楼主是想直接把abs3赋值到ui里,还是把它的各个字符的asc码加起来赋过去。。。
发表于:2007-05-09 09:01:315楼 得分:0
函数名称:           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;
}
发表于:2007-05-09 09:01:416楼 得分:0
函数名称:           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);
}
发表于:2007-05-09 09:01:557楼 得分:0
函数名称:           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;
}
发表于:2007-05-09 09:02:228楼 得分:0
kankan
发表于:2007-05-09 09:04:019楼 得分:0
任意选用一个就是了,
注意数据范围。

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

char   *string= "abs3 ",*endptr;
long   lnumber;
lnumber=strtol(string,&endptr,16);
printf( "string=%s   long=%lx ",string,lnumber);
发表于:2007-05-09 09:04:5610楼 得分:0
我需要的结果是863199841,谢谢各位大虾!!
结帖啦
发表于:2007-05-09 10:03:3211楼 得分:0
可是还有问题:
如果
char   sz[10];
strcpy(sz, "1001abs3 ");
unsigned   int   ui;
用memcpy时,只能将前面1001赋给ui,已经占了4个字节,怎么办?
发表于:2007-05-09 10:18:0112楼 得分:0
对于    
char     sz[10];    
strcpy(sz,     "1001abs3 ");    
unsigned     int     ui;    
用memcpy时,ui得值是82524169,但在内存中是31   30   30   31,只能将前面1001赋给ui,已经占了4个字节,怎么办?我想将 "1001abs3 "在内存中占四个字节,能行吗?
发表于:2007-09-13 10:27:1213楼 得分:0
strtoul
发表于:2007-09-13 10:47:0114楼 得分:0
向   jixingzhong(瞌睡虫·星辰)     学习!
发表于:2007-09-13 15:23:5415楼 得分:0
学习


快速检索

最新资讯
热门点击