ホームページ >バックエンド開発 >Golang >C [1024]C.char 配列を Go [1024]byte 配列に変換するにはどうすればよいですか?

C [1024]C.char 配列を Go [1024]byte 配列に変換するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-18 21:51:11781ブラウズ

How to Convert a C [1024]C.char Array to a Go [1024]byte Array?

C [1024]C.char から Go [1024]byte への変換

Go では、C データ構造を扱うときに、対応する Go 間の変換が必要になることがよくあります。種類。このような変換の 1 つは、C の文字配列 (char[1024]) を Go のバイト配列 ([1024]byte) に変換することです。

これらの型間で直接変換しようとすると、「できません」のようなエラーが発生する可能性があります。 (*_Cvar_my_buf) ([1024]C.char 型) を [1024]byte 型に変換します。これを克服するために、2 つのアプローチを紹介します。

間接変換にスライスを使用する

推奨されるアプローチは、まず C.GoBytes():

mySlice := C.GoBytes(unsafe.Pointer(&C.my_buf), C.BUFF_SIZE)
これは、C my_buf が指すメモリを表す Go スライス ([]byte) を返します。 array.

直接変換のためのポインタのキャスト

また、unsafe.Pointer を介して C 配列のポインタを「キャスト」して、Go スライスを作成することもできます:

mySlice := unsafe.Slice((*byte)(unsafe.Pointer(&C.my_buf)), C.BUFF_SIZE)
このアプローチはメモリへの直接アクセスを提供しますが、慎重に扱う必要があります。

必要なデータを取得するには[1024]バイト配列、スライスを変換できます:

以上がC [1024]C.char 配列を Go [1024]byte 配列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。