【发布时间】:2015-01-06 19:17:59
【问题描述】:
在数据类型之间转换的函数通常内置在编程语言中。有时它们在库或包含文件中实现。我可以想象通过使用大量条件语句将整数转换为字符,但我确信这不是它实际完成的方式。使用什么程序来提供这些转换?
【问题讨论】:
标签: types type-conversion
在数据类型之间转换的函数通常内置在编程语言中。有时它们在库或包含文件中实现。我可以想象通过使用大量条件语句将整数转换为字符,但我确信这不是它实际完成的方式。使用什么程序来提供这些转换?
【问题讨论】:
标签: types type-conversion
在这里你可以在 python 中使用
x = 12345
chrs = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
s = ''
while x > 0:
r = x % 10
s = chrs[r] + s
x = x / 10
(非常低效,但尽我所能)
(想法是在除以 10 后得到余数并附加到字符串)
(在大多数编程语言中,您应该通过joining 一个数组来构建字符串)
【讨论】:
可以使用 ASCII 表进行一些转换:
ASCII 表包含可打印字符,包括数字。好处是 0 到 9 之间的每个数字都是连续的,因此,很容易得到一个数字的 char 值。
看ASCII表,你会看到'0'的char值是48,所以如果n在0到9之间,那么n的char值就是48+n
假设您的号码是 45,并且您想将其转换为字符串。
我们取最后一个数字,即 5。我们创建一个字符串,并将字符串的值设置为 48+5=53,即 '5' 的 ASCII 码。现在,对每个数字重复这个过程,你会得到你的字符串
要将字符串转换回整数,请以另一种方式执行相同的过程:
在同一个例子中,我们有“45”。我们看 '4',ASCII 码 52, 52-48 = 4。我们把这个东西存成一个整数,然后继续循环遍历这个字符串,在每次迭代之前乘以 10。
我已经说明了这个例子here,它有点脏,但我希望它是明确的。代码如下:
string number = "";
number = (char)53 + number;
number = (char)52 + number;
cout << "Expected : a string equals to 45" << endl;
cout << number << endl;
int numberInt = ('4'-48)*10+'5'-48;
cout << "Expected : an integer equals to 45" << endl;
cout << numberInt<<endl;
【讨论】: