【问题标题】:When I try to convert a list of characters to a list of integers, the values change. How do I fix this?当我尝试将字符列表转换为整数列表时,值会发生变化。我该如何解决?
【发布时间】:2018-08-16 05:37:33
【问题描述】:
fun main(args: Array<String>) {

    val list = arrayListOf<Char>()
    val string: String = "731671765313306249192251196744265747423553491"
        loop@ for (char in string) {
            list.add(char)
            if (list.size == 13) {
                break@loop
            }
        }
    val trueList = list.map { it.toInt() }
    println(list)
    println(trueList)
}

每当我尝试将其打印出来时,值都会发生变化。它不是打印出“7,3,1 等”,而是打印出“55,51,59 等”

这是我正在谈论的内容的一个sn-p。我先打印了字符列表,然后打印了整数列表。

[7, 3, 1, 6, 7, 1, 7, 6, 5, 3, 1, 3, 3] // List of the characters
[55, 51, 49, 54, 55, 49, 55, 54, 53, 51, 49, 51, 51] // List of integers

【问题讨论】:

  • 那是那些数字的字符代码点。您需要转换为整数来获取它们的数字表示,或者解析它们,这取决于 java 是如何做到的。
  • @LasseVågsætherKarlsen char 是一个 UTF-16 代码单元, 不是 Unicode 代码点。 UTF-16 需要两个代码单元。例子: ???? ??? ??? ????
  • 55 是数字 7 的代码点,但与所有其他代码点相同。我完全知道 char != 代码点,但在这种情况下,55 代表 7,51 代表 3,等等。

标签: list kotlin type-conversion


【解决方案1】:

它打印出每个单独字符的 ascii 值而不是字符串表示形式。

https://ascii.cl/

var list = string.chunked(1).map { it.toInt() }

【讨论】:

  • 那么我可以从每个整数中减去 48 以获得正确的值吗?
  • 更容易像上面那样使用 String.toInt
猜你喜欢
  • 1970-01-01
  • 2020-11-25
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
相关资源
最近更新 更多