itoa()函数可以实现,根据itoa()第三个参数(2/8/10)可以进行二、八、十六进制的转换,转换后为字符串,如要求是int,可以用atoi实现字符串与int之间的转换举例:#include
"stdioh"#include
"stdlibh"int
main(){int
L1;printf("输入数字\n");scanf("%d",
&L1);char
str1[256];char
str2[256];char
str3[256];itoa(L1,
str1,
2);itoa(L1,
str2,
8);itoa(L1,
str3,
16);printf("2进制:%s\n8进制:%s\n16进制:%s\n",str1,str2,str3);return
0;}
功 能:把一整数转换为字符串
用 法:char itoa(int value, char string, int radix);
详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写
参数:
value: 待转化的整数。
radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
string: 保存转换后得到的字符串。
返回值:
char : 指向生成的字符串, 同string。
备注:该函数的头文件是"stdlibh"
参看>
供参考:
#include<stdioh>
//2 <= base <= 36
#define MAX_INTEGER_BIT 33
char itos_base(int n, int base)
{
static char res[MAX_INTEGER_BIT];
for (int i = 0; i < MAX_INTEGER_BIT; i++)
{
res[i] = 0;
}
int index = MAX_INTEGER_BIT - 2;
do
{
res[index--] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[n % base];
n /= base;
} while (n > 0);
return res + index + 1;
}
char itos(int n)
{
return itos_base(n, 10);
}
int main()
{
printf("%s\n", itos(1234567));
printf("%s\n", itos(0));
printf("%s\n", itos(99));
return 0;
}
运行截图
方法有多种:
可以用 ConverToInt32(string)和Int32Parse(string)或者直接intParse(string)
也可以用 Int32TryParse(string,out int result)或者:intTryParse(string,out int result)来转换。
TryParse的返回值是一个bool类型的值,指示是否转换成功,转换成功后第二个参数就是你已经转换成功的值:
如:
int result;
if(Int32TryParse("20", out result)) {
//转换成功
} else {
//转换失败
}
从你的描述中可以看出,你对itoa函数还没有完全了解,下面先列出itoa函数的说明:
原 型:
char itoa(int value, char string, int radix);
功 能:
把一整数转换为字符串
用 法:
itoa(i,num,10);
参数说明:
i 需要转换成字符的数字
num 转换后保存字符的变量
10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型
现在分析你的描述中的程序段的问题:
写法1:
int a=123;
char str="123"; // str为一指向常量字符串的指针
itoa(a,str,10); // 将str作为第2个参数传入itoa,用于保存转换后的结果字符串
此程序段运行过程中会崩溃,原因是指针str指向的是只读存储区,当对此只读存储区进行写 *** 作时,会崩溃,即出现你说的错误
写法2:
int a=123;
char str[4] = "123"; // 定义了一个大小为4的字符数组str,此处可以不初始化
itoa(a,str,10); // 将str作为第2个参数传入itoa,用于保存转换后的结果字符串
此程序段运行正常,原因是字符数组str正好能保存转换后的结果
注意:
1、对itoa函数第二个参数的初始化基本没有必要,关键是要保证其指向的空间能保存转换结果字符串。
2、你说的那个结束符和能否使用itoa没有关系。
itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如Windows上的)通常在头文件中包含这个函数。在中与之有相反功能的函数是atoi。功能:把一整数转换为字符串。char itoa(int value, char string, int radix); 头文件: 程序例: #include #include int main() { int number = 123456; char string[25]; itoa(number, string, 10); printf("integer = %d string = %s\n", number, string); return 0; }
范围为int的范围,-32768到32767
itoa的用法:
itoa(i,num,10);
i 需要转换成字符的数字
num 转换后保存字符的变量
10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型
原形:char itoa(int value, char string, int radix);
以上就是关于C语言讲一个十进制数转化为二,八,十六进制(函数调用全部的内容,包括:C语言讲一个十进制数转化为二,八,十六进制(函数调用、itoa函数中的i是整型,那a代表什么、C语言itoa函数自己编写,编程问题求解答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)