如何将整数转换为char

时间:2017-09-20 17:45:40

标签: type-conversion character julia

我有一堆整数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)
  1. 为何如此巨大的差异?
  2. 我选择将整数转换为字符,但我不明白正确的方法是什么。当我在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。这是我想要的行为。

    1. 如何实现呢?
    2. 我想创建一个字典来为每个整数分配相应的字符,但我很确定这不是要走的路......

2 个答案:

答案 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'