ホームページ >バックエンド開発 >Golang >C `[1024]char` 配列を Go `[1024]byte` 配列に変換するには?

C `[1024]char` 配列を Go `[1024]byte` 配列に変換するには?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-13 14:15:12701ブラウズ

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

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

はじめに

Go では、C コードとのインターフェイスに型変換が含まれる場合があります。一般的なニーズの 1 つは、C char 配列を Go バイト配列に変換することです。この記事では、これを実現する方法について説明します。

変換テクニック

インターフェイス変換の試行中に発生したエラーは、直接変換が不可能であることを示しています。代わりに、次の手法を検討できます。

方法 1: スライスにコピーする

直接型変換を回避するには、C の char 配列をスライスにコピーします。スライスしてみましょう。これは、C.GoBytes() を使用して実行できます。

mySlice := C.GoBytes(unsafe.Pointer(&C.my_buff), C.BUFF_SIZE)

方法 2: ダイレクト メモリ アクセスに安全でないキャストを使用する

コピーせずにダイレクト メモリ アクセスを行う場合は、 unsafe.Pointer.

mySlice := unsafe.Slice((*byte)(unsafe.Pointer(&C.my_buf)), C.BUFF_SIZE)

配列型を介して安全でないキャストを使用できます変換 (オプション)

配列型が必要な場合は、スライスを配列に変換できます。

myArray := ([C.BUFF_SIZE]byte)(mySlice)

注: 安全でないキャストであることに注意してください。タイプ セーフティ チェックをバイパスするため注意が必要です。この方法を使用する前に、潜在的なリスクを常に考慮してください。

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

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