[100]byte
大量のデータを転送するために読み取る必要がありますstring
。
すべての がstring
正確に 100 文字の長さではないため、 の残りの部分にはbyte array
が埋め込まれます0
。
by:[100]byte
に変換すると、末尾のs は s として表示されます。string
string(byteArray[:])
0
^@^@
C では、 はstring
で終了します。では、これをGo でに0
変換する最適な方法は何でしょうか?byte array
string
ベストアンサー1
データをバイト スライスに読み込むメソッドは、読み込んだバイト数を返します。その数値を保存し、それを使用して文字列を作成します。n
読み込んだバイト数が の場合、コードは次のようになります。
s := string(byteArray[:n])
文字列全体を変換するには、以下を使用します。
s := string(byteArray[:len(byteArray)])
これは次と同等です:
s := string(byteArray[:])
何らかの理由で がわからない場合は、入力に null 文字が埋め込まれていないと仮定して、パッケージをn
使用して見つけることができます。bytes
n := bytes.Index(byteArray[:], []byte{0})
または、icza が指摘したように、以下のコードを使用することもできます。
n := bytes.IndexByte(byteArray[:], 0)