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

更改Julia数组中的值并得到奇怪的结果?,julia,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 temp=0(Int64,长度(输入字符串)) i=1 而i

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

temp=0(Int64,长度(输入字符串))
i=1
而i<长度(输入字符串)
temp[i]=输入字符串[i]
i+=1
结束
使用
input\u string=“200”
我希望它返回
temp=[2 0 0]
,但出于某种原因,我返回一个3元素数组{Int64,1},其值
[50,48,0]。


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

有几点:

  • 为字符串编制索引(
    input\u string[i]
    )将为您提供类型为
    Char
    的字符
  • 当更新数组的内容时(
    temp[i]=…
    ),Julia将右侧转换为与数组
    temp
    相同的元素类型
  • Char
    (右侧)转换为
    Int
    (这是
    temp
    的元素类型)将给出对应于该字符的ASCII值
  • 字符串
    “200”
    由字符
    '2'
    '0'
    '0'
    组成,这些ASCII值是
    50
    48
    48
    ,因此我们希望
    temp
    [50、48、48]
    ,但循环有一个错误,因为它在转换“200”时应该检查
    i对于
    Int
    vector[2,0,0]来说,更短的形式就是:

    parse.(Int,split("200",""))
    
    或者是快4倍的版本

    parse.(Int,(v for v in "200"))
    
    还有10%更好:

    parse.(Int,collect("200"))
    
    最后,我能想到的最快的方法是:

    [Int(v)-48 for v in "200"]
    
    parse.(Int,collect("200"))
    
    [Int(v)-48 for v in "200"]