web-dev-qa-db-ja.com

Juliaで整数を文字列に変換する

Juliaで整数を文字列に変換したい。

私が試したとき:

_a = 9500
b = convert(String,a)
_

エラーが発生します:

_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
_

Int64を文字列に変換できない理由がわかりません。

aa = UInt64(9500)などの異なる型として定義しようとしましたが、同様のエラーが発生します。

私はこれが非常に基本的であることを知っており、これを行う正しい方法を探してみました here が、それを理解できませんでした。

17
Mike

あなたは使うべきです:

b = string(a)

または

b = repr(a)

string関数は、printを使用して任意の値から文字列を作成するために使用でき、reprshowallを使用します。の場合には Int64これは同等です。

そして、実際には、これがおそらく変換が機能しない理由です-ベースの選択に応じて整数を文字列に変換する多くの方法があるためです。

[〜#〜]編集[〜#〜]

整数の場合、bindechexoctまたはbaseを使用して、過去のバージョンのJuliaで文字列に変換することもできます。

Julia 1.0以降では、整数のbaseキーワード引数を指定した string 関数を使用して、異なるベースで変換を行うことができました。また、数値のリテラルビット表現を提供するbitstring関数もあります。ここではいくつかの例を示します。

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"
22