Maison > développement back-end > Golang > Comment convertir un tableau C `[1024]char` en un tableau Go `[1024]byte` ?

Comment convertir un tableau C `[1024]char` en un tableau Go `[1024]byte` ?

Linda Hamilton
Libérer: 2024-12-13 14:15:12
original
760 Les gens l'ont consulté

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

Go : Conversion de [1024]C.char en [1024]octet

Introduction

En Go, l'interfaçage avec du code C peut impliquer des conversions de types. Un besoin courant est de convertir un tableau de caractères C en un tableau d'octets Go. Cet article explique comment y parvenir.

Techniques de conversion

L'erreur rencontrée lors de la tentative de conversion d'interface suggère qu'une conversion directe n'est pas réalisable. Au lieu de cela, nous pouvons envisager les techniques suivantes :

Méthode 1 : Copier vers une tranche

Pour éviter une conversion de type directe, vous pouvez copier le tableau de caractères C dans un Allez trancher. Cela peut être fait en utilisant C.GoBytes().

mySlice := C.GoBytes(unsafe.Pointer(&C.my_buff), C.BUFF_SIZE)
Copier après la connexion

Méthode 2 : Utilisation de la diffusion non sécurisée pour l'accès direct à la mémoire

Pour un accès direct à la mémoire sans copie, vous peut utiliser une diffusion non sécurisée via un unsafe.Pointer.

mySlice := unsafe.Slice((*byte)(unsafe.Pointer(&C.my_buf)), C.BUFF_SIZE)
Copier après la connexion

Conversion de type de tableau (Facultatif)

Si vous avez besoin d'un type de tableau, vous pouvez convertir la tranche en tableau.

myArray := ([C.BUFF_SIZE]byte)(mySlice)
Copier après la connexion

Remarque : N'oubliez pas que la diffusion non sécurisée nécessite prudence car il contourne les contrôles de sécurité de type. Tenez toujours compte des risques potentiels avant d'utiliser cette méthode.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal