更改 Julia 数组中的值并得到奇怪的结果?

Jle*_*523 4 julia

我在 Julia 1.4.2 中有以下代码

temp = zeros(Int64, length(input_string))
i = 1

while i< length(input_string)
   temp[i] = input_string[i]
   i += 1
end

Run Code Online (Sandbox Code Playgroud)

使用input_string = "200"我希望这会返回temp = [2 0 0],但由于某种原因,我返回一个带有值的 3 元素 Array{Int64,1}[50, 48, 0].

有没有办法让我理解这一点?

fre*_*kre 5

这有几件事:

  1. 索引一个字符串 ( input_string[i]) 会给你一个 type 的字符Char
  2. 更新数组( temp[i] = ...)的内容时,Julia 将右侧转换为与数组相同的元素类型temp
  3. 将 a Char(右侧)转换为 an Int(它是 的元素类型temp)给出与字符对应的 ASCII 值。

该字符串"200"包含的字符'2''0'并且'0',其ASCII值5048并且48因此我们认为,temp[50, 48, 48] 环有,因为它应该检查的错误i <= length(input_string),所以最后一个元素beeing0有从初始化。


这是我为此编写的代码:

function str_to_ints(str)
    r = Int[]
    for c in str
        ci = parse(Int, c)
        push!(r, ci)
    end
    return r
end
Run Code Online (Sandbox Code Playgroud)

例子:

julia> str_to_ints("200")
3-element Array{Int64,1}:
 2
 0
 0
Run Code Online (Sandbox Code Playgroud)