Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar Array C `[1024]char` kepada Array `[1024]bait` Go?
Pergi: Menukar [1024]C.char kepada [1024]bait
Pengenalan
Dalam Go, antara muka dengan kod C boleh melibatkan penukaran jenis. Satu keperluan biasa ialah menukar tatasusunan aksara C kepada tatasusunan bait Go. Artikel ini meneroka cara untuk mencapai perkara ini.
Teknik Penukaran
Ralat yang dihadapi semasa mencuba penukaran antara muka menunjukkan bahawa penukaran langsung tidak boleh dilaksanakan. Sebaliknya, kita boleh mempertimbangkan teknik berikut:
Kaedah 1: Menyalin ke Slice
Untuk mengelakkan penukaran jenis langsung, anda boleh menyalin tatasusunan aksara C ke Pergi potong. Ini boleh dilakukan menggunakan C.GoBytes().
mySlice := C.GoBytes(unsafe.Pointer(&C.my_buff), C.BUFF_SIZE)
Kaedah 2: Menggunakan Penghantaran Tidak Selamat untuk Akses Memori Terus
Untuk akses memori langsung tanpa menyalin, anda boleh menggunakan hantaran yang tidak selamat melalui penunjuk yang tidak selamat.
mySlice := unsafe.Slice((*byte)(unsafe.Pointer(&C.my_buf)), C.BUFF_SIZE)
Penukaran Jenis Tatasusunan (Pilihan)
Jika anda memerlukan jenis tatasusunan, anda boleh menukar kepingan itu kepada tatasusunan.
myArray := ([C.BUFF_SIZE]byte)(mySlice)
Nota: Ingat bahawa pemutus yang tidak selamat memerlukan berhati-hati kerana ia memintas pemeriksaan keselamatan jenis. Sentiasa pertimbangkan potensi risiko sebelum menggunakan kaedah ini.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Array C `[1024]char` kepada Array `[1024]bait` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!