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

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

Susan Sarandon
リリース: 2024-12-18 21:51:11
オリジナル
780 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート