我有一堆整数ns,其中对于ns中的所有n,0 <= n <= 9。我需要将它们保存为字符或字符串。我使用@time来比较内存使用情况,我得到了这个:
julia> @time a = "a"
0.000010 seconds (84 allocations: 6.436 KiB)
"a"
julia> @time a = 'a'
0.000004 seconds (4 allocations: 160 bytes)
'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
我选择将整数转换为字符,但我不明白正确的方法是什么。当我在REPL中Char(1)
时,我得到'\x01': ASCII/Unicode U+0001 (category Cc: Other, control)
,如果我尝试打印它,我会得到这个符号:。
当我在REPL中'1'
时,我得到'1': ASCII/Unicode U+0031 (category Nd: Number, decimal digit)
,如果我打印它,我会得到1
。这是我想要的行为。
我想创建一个字典来为每个整数分配相应的字符,但我很确定这不是要走的路......
答案 0 :(得分:3)
使用Char(n + '0')
。这将添加0
数字的ASCII偏移并修复其余数字。例如:
julia> a = 5
5
julia> Char(a+'0')
'5': ASCII/Unicode U+0035 (category Nd: Number, decimal digit)
另请注意,@time
的时序有点问题,特别是对于非常小的操作。最好使用BenchmarkTools.jl中的@btime
或@benchmark
。
答案 1 :(得分:1)
您可能需要以下内容:
julia> bunch_of_integers = [1, 2, 3, 4, 5]
julia> String(map(x->x+'0', bunch_of_integers))
"12345"
或类似的东西:
julia> map(Char, bunch_of_integers.+'0')
5-element Array{Char,1}:
'1'
'2'
'3'
'4'
'5'