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