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); 今天刚好遇到了相关问题,受教受教了,谢谢