Maison >développement back-end >Golang >Comment puis-je extraire la représentation binaire d'une valeur d'octet dans Go ?
Lors de la manipulation de valeurs d'octets dans Go, il est souvent nécessaire de travailler avec des bits individuels. Cet article explore les méthodes d'extraction des représentations binaires des octets, en abordant le défi spécifique de déterminer la représentation binaire pour la valeur d'octet 1.
Pour représenter visuellement les bits dans un octet, vous peut utiliser fmt.Sprintf(" b", ...), comme suggéré par d'autres. Cependant, pour les opérations mathématiques impliquant des bits, les opérateurs au niveau du bit sont indispensables.
Pour déterminer le nième bit d'un octet, effectuez une opération ET au niveau du bit (&) entre l'octet et un octet avec le nème bit mis à 1 (masque). Ce masque est calculé ainsi avec 20 = 1 (00000001) :
Le résultat est 1, indiquant que le 1er bit est 1.Fonction de distance de Hammingfmt.Print(13 & 1) // Output: 1
La distance de Hamming entre deux octets mesure le nombre de bits différents. Voici une fonction qui calcule la distance de Hamming entre deux tableaux d'octets (tableaux à un octet dans le scénario donné) :
Cette fonction utilise des opérations ET au niveau du bit pour comparer les bits correspondants des tableaux d'octets. Le Go Playground démontre son utilisation :https://play.golang.org/p/O1EGdzDYAnfunc hamming(a, b []byte) (int, error) { if len(a) != len(b) { return 0, errors.New("a b are not the same length") } diff := 0 for i := 0; i < len(a); i++ { b1 := a[i] b2 := b[i] for j := 0; j < 8; j++ { mask := byte(1 << uint(j)) if (b1 & mask) != (b2 & mask) { diff++ } } } return diff, nil }
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!