Dans Go, vous pouvez convertir des entiers non signés en un tableau d'octets à l'aide des méthodes Uint16() et Uint32() de les types binaire.BigEndian et binaire.LittleEndian. Cependant, vous avez peut-être remarqué l'absence de méthodes Int16() ou Float32() équivalentes.
Endianness fait référence à l'ordre dans lequel les octets sont stockés en mémoire pour un temps donné. type numérique. Le package binaire de Go fournit des fonctionnalités de conversion entre différentes endianness.
Pour convertir un entier non signé en un entier signé, vous pouvez utiliser une simple conversion de type. La disposition de la mémoire d'un entier non signé de 16 bits (uint16) et d'un entier signé de 16 bits (int16) est la même. Par conséquent, vous pouvez effectuer la conversion suivante :
<code class="go">a := binary.LittleEndian.Uint16(sampleA) a2 := int16(a)</code>
Cette conversion ne modifie pas la représentation de la mémoire, seulement le type.
Conversion les entiers non signés en nombres à virgule flottante sont légèrement plus impliqués. Le package mathématique de Go fournit des fonctions de conversion entre des entiers non signés et des flottants, telles que math.Float32frombits() et math.Float64frombits().
<code class="go">a := binary.LittleEndian.Uint64(sampleA) a2 := math.Float64frombits(a)</code>
Cette conversion ne manipule pas la valeur de la mémoire mais la "visualise" à la place. comme un type différent en utilisant le package non sécurisé.
Le package binaire fournit également les fonctions Read() et Write(), qui exécutent ces conversions sous le capot. Vous pouvez utiliser ces fonctions pour convertir entre différents types numériques et tableaux d'octets.
<code class="go">var pi float64 buf := bytes.NewReader(b) err := binary.Read(buf, binary.LittleEndian, &pi) // or a := binary.LittleEndian.Uint64(b) a2 := math.Float64frombits(a)</code>
Dans cet exemple, le tableau d'octets d'entrée contient la valeur de pi au format petit-boutien. La fonction Read() convertit le tableau d'octets en valeur float64, tandis que Uint64() et Float64frombits() effectuent la conversion manuellement.
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!