ゼロ終端バイト配列を文字列に変換するにはどうすればいいですか? 質問する

ゼロ終端バイト配列を文字列に変換するにはどうすればいいですか? 質問する

[100]byte大量のデータを転送するために読み取る必要がありますstring

すべての がstring正確に 100 文字の長さではないため、 の残りの部分にはbyte arrayが埋め込まれます0

by:[100]byteに変換すると、末尾のs は s として表示されます。stringstring(byteArray[:])0^@^@

C では、 はstringで終了します。では、これをGo でに0変換する最適な方法は何でしょうか?byte arraystring

ベストアンサー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)

おすすめ記事