首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char转int失败!解决方法

2012-12-15 
char转int失败!!各位,我想把一个unsigned char c1, 转换为一个int 型的 t1.但用了好几种方法,都有问题。比

char转int失败!!
   各位,我想把一个unsigned char c1, 转换为一个int 型的 t1. 
   但用了好几种方法,都有问题。

    比如:
       printf("c1 is %x, c2 is %x. \n", c1, c2);  
    打印的值是,9F 和 17.  

    然后我  t1 = atoi(c2);  结果t1 的值为0.
           t1 = atoi(&c2);  结果t1 的值为87546之类很大的一个数,象是内存地址.
           
    又试过用 t1 = strtol(&c2, NULL, 16);   结果是 0.
    其实我在vc6上做实验,用strtol 转换'f',能得到正确的值 15.

    请教大神们,有啥办法得到char的值?难道和unsigned 有关? 
[最优解释]

引用:
是这样的,这个c1里读出的数,最大为 256。。。。,当然,一个char能表示的最大也就是256.
   但是,我打印的时候会是这样:
        printf("c1 is %x, c2 is %x. \n", c1, c2); 
       printf("c1 is %c, c2 is %c. \n", c1, c2);
       结果为:
……

这个直接=就可以了
int c2=c1,打印时按照%d输出就可以了
[其他解释]
1、atoi/strtol等函数都是把字符串转为整型的;
2、字符串是char*/char[]这样声明的;
3、而你的unsigned char c1本身就是0~255的整型数,而不是字符串;
4、所以直接打印即可,printf("c1 is %d, c2 is %d. \n", c1, c2)。
%d/%x只是你打印c1和c2的格式而已。

引用:
各位,我想把一个unsigned char c1, 转换为一个int 型的 t1. 
   但用了好几种方法,都有问题。

    比如:
       printf("c1 is %x, c2 is %x. \n", c1, c2);  
    打印的值是,9F 和 17.  

    然后我  t1 = atoi(c2);  结果t1 的值为0……

[其他解释]
unsigned char转int

将unsigned char按int格式输出
不是一回事!

unsigned char转int:
int i;
unsigned char c;
i=(int)c;

将unsigned char按int格式输出:
printf("%d\n",c);


[其他解释]
如果你的char里面是数值

#include <stdio.h>
int main()
{
char c1=16;
int t1=c1;

printf("c1=%x, t1=%x\n", c1, t1);
printf("c1=%d, t1=%d\n", c1, t1);
return 0;
}


如果你的char里面是字符型的数字

#include <stdio.h>
int main()
{
char c1='9';//只能存一位,想存9以是的,就得用16进制表示
char pc1[2];
int t1;

pc1[0]=c1;
pc1[1]=0;
sscanf(pc1, "%d", &t1);


printf("c1=%x, t1=%x\n", c1, t1);
printf("c1=%d, t1=%d\n", c1, t1);
printf("c1=%c, t1=%c\n", c1, t1);
return 0;
}

[其他解释]

int _tmain(int argc, _TCHAR* argv[])
{


unsigned char c1=159;
unsigned char c2=17;
printf("c1 is %x, c2 is %x. \n", c1, c2); 
printf("c1 is %d, c2 is %d. \n", c1, c2+7);

system("pause");
return 0;
}


运行结果

[其他解释]
没看懂你要怎么转.....
'0-9'转0-9?
'a-f'转10-15?

[其他解释]
你想怎么转?没看明白.你把code贴上来.
[其他解释]
功 能: 把字符串转换成整型数. 


  名字来源:array to integer 的缩写. 


  原型: int atoi(const char *nptr); 


  函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。 


  头文件: #include <stdlib.h> 

[其他解释]
引用:
各位,我想把一个unsigned char c1, 转换为一个int 型的 t1. 
   但用了好几种方法,都有问题。

    比如:
       printf("c1 is %x, c2 is %x. \n", c1, c2);  
    打印的值是,9F 和 17.  

    然后我  t1 = atoi(c2);  结果t1 的值为0……

//******************************//
printf(" %d", c1);
“%”之后的格式解释:
  d 有符号10进制整数
  i 有符号10进制整数
  o 无符号8进制整数
  u 无符号10进制整数
  x 无符号的16进制数字,并以小写abcdef表示
  X 无符号的16进制数字,并以大写ABCDEF表示
  f 浮点数
  E/e 用科学表示格式的浮点数
  g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数
  c 单个字符
  s 字符串
  S wchar_t字符(宽字符)类型字符串
  % 显示百分号本身
  p 显示一个指针,near指针表示为:XXXX
  far 指针表示为:XXXX:YYYY
  n 相连参量应是一个指针,其中存放已写字符的个数
希望对你有帮助!
另外不要忘了结贴!兄弟!

[其他解释]
   是这样的,这个c1里读出的数,最大为 256。。。。,当然,一个char能表示的最大也就是256.
   但是,我打印的时候会是这样:
        printf("c1 is %x, c2 is %x. \n", c1, c2); 
       printf("c1 is %c, c2 is %c. \n", c1, c2);
       结果为:
        c1 is 9f, c2 is 17. 
       c1 is ? c2 is . 
  
   我只转第二个char,比如16进制打印为17,那我希望我能把它转成 16 + 7 = 23.
   第一楼就是我的代码,只不过都是做实验失败的代码。。。。。  
[其他解释]
char   *ch;

int num=atoi(ch);
[其他解释]

 原型: int atoi(const char *nptr);
[其他解释]
引用:
是这样的,这个c1里读出的数,最大为 256。。。。,当然,一个char能表示的最大也就是256.
   但是,我打印的时候会是这样:
        printf("c1 is %x, c2 is %x. \n", c1, c2); 
       printf("c1 is %c, c2 is %c. \n", c1, c2);


       结果为:
……



printf("c1 is %d, c2 is %d. \n", c1, c2);
[其他解释]
已验证,直接用 “=”赋值就可以了。
唉,惭愧,多谢各位兄弟援手!!
[其他解释]
一个unsigned char能表示的最大值为255

[其他解释]
引用:
unsigned char转int

将unsigned char按int格式输出
不是一回事!

unsigned char转int:
int i;
unsigned char c;
i=(int)c;

将unsigned char按int格式输出:
printf("%d\n",c);

今天刚好遇到了相关问题,受教受教了,谢谢

热点排行