2015-03-19 1 views
3

Я новичок в Julia, и мне было интересно, какой лучший, удобный, читаемый и быстрый способ сделать это.Каков наилучший способ преобразования int в char в Julia?

Пример: 5 -> '5'

Мой лучший подход сейчас:

c = string(i)[1] 

или

c = char('0'+i) 
+1

Что вы планируете делать с вашим 'Char'? – rickhg12hs

+0

@ rickhg12hs: Конечная цель состояла в том, чтобы заменить некоторые цифры целого на другую цифру. например 35294 -> 31114 Использование символа при работе с целыми числами кажется несвязанным, но мое намерение было вторичным по отношению к вопросу. – reschu

ответ

1

Ваш предложил второй ответ легко понять, правильно (для латинские цифры!), и быстро.

digittochar(d) = Char('0' + d) 

В зависимости от предполагаемой чистоты восходящего потока данных, вы можете добавить некоторые проверки, чтобы убедиться, что вы не получите что-то неожиданное; после того, как все

digittochar(6002) = អ 
0

Если вы хотите Джулию function, который будет заменять цифры в целое число, вот один из способов сделать это. Там действительно нет проверки ошибок, так что это хрупкий ореховый вход.

julia> function replace_int_digs{T <: Union(BigInt, Unsigned, Signed)}(x::T, locs::Vector{Int}, digs::Vector{Int})           
      x_str_array = split(string(x), "")                            
      for (k, loc) in enumerate(locs)                             
       x_str_array[loc] = string(digs[k])                           
      end                                    
      return parseint(T, join(x_str_array))                           
     end                                     
replace_int_digs (generic function with 1 method)                           

julia> replace_int_digs(12345,[3],[9])                              
12945                                      

julia> replace_int_digs(big(12345),[3],[9])                            
12945                                      

julia> replace_int_digs(big(12345),[3,1],[9,7])                           
72945                                      

julia> replace_int_digs(int32(12345),[3,1],[9,7])                           
72945