Maison > développement back-end > Golang > Convertir en binaire. La lecture de la donnée ne donne aucun résultat

Convertir en binaire. La lecture de la donnée ne donne aucun résultat

WBOY
Libérer: 2024-02-08 22:06:09
avant
626 Les gens l'ont consulté

Convertir en binaire. La lecture de la donnée ne donne aucun résultat

Dans cet article, l'éditeur PHP Baicao présentera comment convertir des éléments de données en binaire et ne donnera aucun résultat. Le processus est très simple et il vous suffit de suivre quelques règles de base. Tout d’abord, les éléments de données sont lus un par un, puis chaque élément de données est converti en binaire. Ensuite, pour chaque nombre binaire, si les chiffres qu'il contient sont tous des zéros, donnez un résultat nul. Grâce à cette méthode, nous pouvons facilement convertir les éléments de données en binaire et obtenir les résultats correspondants. Si cette démarche vous intéresse, alors suivez l'éditeur pour apprendre ensemble !

Contenu de la question

Je souhaite lire des données binaires et les écrire dans un fichier, et mes données ne sont que des tranches. La partie encodage fonctionne mais mon décodage via binary.Read ne donne aucun résultat. Qu'ai-je fait de mal?

data := []int16{1, 2, 3}
    buf := new(bytes.Buffer)
    err := binary.Write(buf, binary.LittleEndian, data)
    if err != nil {
        fmt.Println("binary.Write failed:", err)
    }
    fmt.Println(buf.Bytes())
    // working up to this point

    r := bytes.NewReader(buf.Bytes())
    got := []int16{}
    if err := binary.Read(r, binary.LittleEndian, &got); err != nil {
        fmt.Println("binary.Read failed:")
    }
    fmt.Println("got:", got)
Copier après la connexion

L'exécution de ce code donne

[1 0 2 0 3 0]
got: []
Copier après la connexion

Lien Playground ici : https://go.dev/play/p/yZOkwXj8BNv

Workaround

Vous devez rendre la tranche aussi grande que ce que vous voulez lire dans le tampon. Vous obtenez un résultat vide car got a une longueur de zéro.

got := make([]int16, buf.Len()/2)
if err := binary.Read(buf, binary.LittleEndian, &got); err != nil {
    fmt.Println("binary.Read failed:")
}
Copier après la connexion

Comme l'a dit JimB, vous pouvez lire directement à partir du tampon.

Voir aussi la documentation de binary.Read

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:stackoverflow.com
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