Go:將[1024]C.char 轉換為[1024]byte
簡介
在Go 中,與C 程式碼的介面可能涉及型別轉換。一個常見的需求是將 C 字元數組轉換為 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中文網其他相關文章!