Maison  >  Article  >  développement back-end  >  Comment convertir des chaînes hexadécimales en flottants IEEE-754 en Go ?

Comment convertir des chaînes hexadécimales en flottants IEEE-754 en Go ?

DDD
DDDoriginal
2024-11-24 14:58:11696parcourir

How to Convert Hexadecimal Strings to IEEE-754 Floats in Go?

Conversion de l'hexadécimal en valeurs flottantes IEEE-754

Pour convertir des chaînes hexadécimales telles que "0xC40C5253" en valeurs flottantes IEEE-754, la norme strconv. La fonction ParseFloat n'est pas suffisante. Cet article explore des méthodes alternatives pour réaliser cette conversion.

Tout d'abord, déterminez la longueur en bits de l'entrée. Dans ce cas, avec 8 chiffres hexadécimaux, il s'agit probablement d'un flottant de 32 bits (bien qu'une confirmation de l'utilisateur soit recommandée).

Utilisation de strconv.ParseUint et d'une conversion non sécurisée :

  • Utilisez strconv.ParseUint() pour analyser la chaîne hexadécimale sous forme d'entier non signé de 32 bits (uint32).
  • Convertissez le résultat uint64 en uint32 pour qu'il corresponde à la taille de float32.
  • Utilisez le package unsafe pour interpréter les octets de uint32 comme les octets d'un float32.

Code :

s := "C40C5253"
n, err := strconv.ParseUint(s, 16, 32)
if err != nil {
    panic(err)
}
n2 := uint32(n)
f := *(*float32)(unsafe.Pointer(&n2))

Utilisation alternative de math.Float32frombits :

Le package mathématique fournit une fonction intégrée Float32frombits() qui convertit directement un uint32 en un float32.

Code :

f := math.Float32frombits(n2)

Utilisation :

Avec l'une ou l'autre méthode, vous pouvez désormais accéder à la valeur float stocké dans f. Par exemple :

fmt.Println(f) // Output: -561.2863

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:
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
Article précédent:Couplage et cohésionArticle suivant:Couplage et cohésion