Maison > développement back-end > Golang > Comment puis-je convertir efficacement des chaînes hexadécimales en valeurs à virgule flottante IEEE-754 dans Go ?

Comment puis-je convertir efficacement des chaînes hexadécimales en valeurs à virgule flottante IEEE-754 dans Go ?

Susan Sarandon
Libérer: 2024-11-23 16:18:17
original
445 Les gens l'ont consulté

How Can I Efficiently Convert Hex Strings to IEEE-754 Floating-Point Values in Go?

Conversion de chaînes hexadécimales en valeurs flottantes dans IEEE-754

Problème :
Conversion de chaînes hexadécimales (par exemple, "0xC40C5253") en les valeurs à virgule flottante utilisant la conversion IEEE-754 se sont révélées difficiles avec le Fonction strconv.ParseFloat. Existe-t-il une approche alternative ?

Réponse :
Pour convertir efficacement des chaînes hexadécimales en valeurs flottantes, envisagez les étapes suivantes :

  1. Déterminer la longueur en bits : Spécifiez la longueur en bits de la chaîne hexadécimale d'entrée (par exemple, 32 bits pour float32).
  2. Analyser la chaîne hexadécimale en UInt32 : Utilisez strconv.ParseUint() pour analyser la chaîne hexadécimale en un entier non signé de 32 bits (uint32).
  3. Convertir en Float32 : Utilisez le package non sécurisé pour réinterpréter le uint32 comme pointeur float32.

Voici un exemple d'extrait de code qui illustre ces étapes :

import (
    "fmt"
    "strconv"
    "unsafe"
)

func main() {
    s := "C40C5253"
    n, err := strconv.ParseUint(s, 16, 32)
    if err != nil {
        panic(err)
    }
    n2 := uint32(n)
    f := *(*float32)(unsafe.Pointer(&n2))
    fmt.Println(f)
}
Copier après la connexion

Remarque :
Alternativement, le package mathématique fournit une fonction math.Float32frombits() intégrée pour convertir les valeurs uint32 en float32, qui peut être utilisé à la place du package non sécurisé :

f := math.Float32frombits(n2)
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!

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