Conversion de Slice en Array pour l'en-tête RPM Magic
En essayant de traiter les fichiers RPM, accès au champ d'en-tête Magic, représenté sous forme de tableau d'octets, peut poser un défi de conversion. L'extrait de code ci-dessous illustre ceci :
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 } lead := Lead{} lead.Magic = buffer[0:4] // Attempt to assign slice to array
Au lieu de copier la tranche dans un tableau à l'aide de la méthode de copie, qui ne fonctionne que sur les tranches, vous pouvez contourner cette restriction en incitant la fonction de copie à traiter le tableau comme une tranche :
copy(varLead.Magic[:], someSlice[0:4])
Vous pouvez également utiliser une boucle for pour effectuer la copie :
for index, b := range someSlice { varLead.Magic[index] = b }
Une troisième option, qui utilise des littéraux, est illustrée dans le code ci-dessous :
package main import "fmt" func main() { someSlice := []byte{0x42, 0x45, 0x4E, 0x44} var varLead = Lead{[4]byte(someSlice)} fmt.Println(varLead.Magic) } type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 }
En employant ces techniques, vous pouvez convertir efficacement une tranche d'octets en un tableau, facilitant la manipulation du champ d'en-tête Magic dans votre application d'analyse RPM.
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!