你是强制转换吗?
0x1032是16进制啊,10进制的数据总么会有0x呢?
如果你是进行的强制转换,那结果一定是错的,因为字符和整数进行转换都是按ASCII编码进行转换的。ASCII中只有单个字符的编码,字符串要被转换为整型都需要单个单个的进行转换。
但很多时候,我们要将一个数字型的字符串转换为相对应的整型数据,这要总么转呢。强制转换一定是不行的,因为强制转换按内存模型来匹配的,只是将一个数据的内存套到要转换的数据内存中。
这时候我们就要用相应的算法来处理,至于这个算法有很多,由于本人水平有限,还是不给你现丑了,这里我告诉你几个库函数,这些库函数在stdlib.h头文件中
1. float atof(const char *str);:字符串转浮点型函数,即将一个"123.12"转换为float类型的123.12
2. int atoi(const char *str); 字符串转整型函数
3. long atol(const char *str); 字符串转长整型函数
这里给你一个示例吧:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *str="12345.67";
long result;
result=atol(str);
printf("string=%s\nlong =%ld\n",str,result);
getch();
return 0;
}
//这个示例是将一个char *str="12345.67";类型的数据转换为对应的浮点类型数据
追问那个0x1032中的0x我只是说明是十六进制,是不是没有这样转换的函数?
追答 10进制转为16进制有什么难的呢?网上有大量进制转换函数代码,随便找一个加进去就可以了。如果只是要在输出时转换为16进制,库中有很多格式化输出函数,printf就可以进行格式转换输出。
另外进制是可以进行隐式的转换的,看下图(是用C++的代码)
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/fc1f4134970a304e709ef53bd0c8a786c8175cb6?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
//由此可以见你只要将这个数以16进制赋给一个整型变量,系统可以自动转换为一个10进制的数。