Je veux convertir un entier en chaîne dans Julia.
Quand j'essaye:
a = 9500
b = convert(String,a)
Je reçois l'erreur:
ERROR: LoadError: MethodError: Cannot `convert` an object of type Int64 to an object of type String
This may have arisen from a call to the constructor String(...),
since type constructors fall back to convert methods.
in include_from_node1(::String) at ./loading.jl:488
in process_options(::Base.JLOptions) at ./client.jl:265
in _start() at ./client.jl:321
while loading ..., in expression starting on line 16
Je ne sais pas pourquoi les Int64 ne peuvent pas être convertis en chaînes.
J'ai essayé de définir a
comme différents types, par exemple a = UInt64(9500)
, mais j'obtiens des erreurs similaires.
Je sais que c'est très basique et j'ai essayé de chercher la bonne façon de le faire ici , mais je n'ai pas pu le comprendre.
Tu devrais utiliser:
b = string(a)
ou
b = repr(a)
La fonction string
peut être utilisée pour créer une chaîne à partir de n'importe quelle valeur en utilisant print
et repr
utilise showall
. En cas de Int64
c'est équivalent.
Et en fait, c'est probablement la raison pour laquelle la conversion ne fonctionne pas - car il existe de nombreuses façons de convertir un entier en chaîne en fonction du choix de la base.
[~ # ~] modifier [~ # ~]
Pour les entiers, vous pouvez les convertir dans la version précédente de Julia en chaîne en utilisant également bin
, dec
, hex
, oct
ou base
.
Après Julia 1.0, vous pouvez effectuer les conversions dans différentes bases en utilisant la fonction string avec l'argument de mot clé base
pour les entiers. Vous disposez également de la fonction bitstring
qui donne la représentation littérale en bits d'un nombre. Voici quelques exemples:
Julia> string(100)
"100"
Julia> string(100, base=16)
"64"
Julia> string(100, base=2)
"1100100"
Julia> bitstring(100)
"0000000000000000000000000000000000000000000000000000000001100100"
Julia> bitstring(UInt8(100))
"01100100"
Julia> string(100.0)
"100.0"
Julia> string(100.0, base=2)
ERROR: MethodError: no method matching string(::Float64; base=2)
Closest candidates are:
string(::Any...) at strings/io.jl:156 got unsupported keyword argument "base"
string(::String) at strings/substring.jl:146 got unsupported keyword argument "base"
string(::SubString{String}) at strings/substring.jl:147 got unsupported keyword argument "base"
...
Stacktrace:
[1] top-level scope at none:0
Julia> bitstring(100.0)
"0100000001011001000000000000000000000000000000000000000000000000"