Maison > développement back-end > Golang > 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
Libérer: 2024-11-24 14:58:11
original
774 Les gens l'ont consulté

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))
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal