【问题标题】:How is an integer converted to a string and vice versa?如何将整数转换为字符串,反之亦然?
【发布时间】:2015-01-06 19:17:59
【问题描述】:

在数据类型之间转换的函数通常内置在编程语言中。有时它们在库或包含文件中实现。我可以想象通过使用大量条件语句将整数转换为字符,但我确信这不是它实际完成的方式。使用什么程序来提供这些转换?

【问题讨论】:

    标签: types type-conversion


    【解决方案1】:

    在这里你可以在 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 一个数组来构建字符串)

    【讨论】:

    • 嗯,我的意思是低级。就像在它们之间进行转换一样。可能是另一个标记类型的变量发生了变化?
    【解决方案2】:

    可以使用 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-27
      • 2012-04-27
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多