8
votes

Encodage et décodage IEEE 754 flotte en JavaScript

J'ai besoin d'encoder et de décoder IEEE 754 flottant et double de binaire dans Node.js pour analyser un protocole réseau.

Y a-t-il des bibliothèques existantes qui font cela ou dois-je lire la spécification et la mettre en œuvre moi-même? Ou devrais-je écrire un module C pour le faire?


2 commentaires

Peut-être que vous pouvez voir si cette chose fait ce que vous voulez: JSFROMHell.com/classes/binary-Parser


Voir aussi: JavaScript - lire / écrire des octets de flotteur dans JS - Overflow de pile (toutes les réponses y travailleraient ici aussi)


3 Réponses :


3
votes

Notez que comme du noeud 0.6 Cette fonctionnalité est incluse dans la bibliothèque principale, c'est donc la nouvelle meilleure façon de le faire.

voir http://nodejs.org/docs/latest/api/buffer.html pour plus de détails.

Si vous lisez / écriture des structures de données binaires, vous pouvez envisager d'utiliser une enveloppe conviviale autour de cette fonctionnalité pour faciliter la lecture et la maintenance des choses. Fiche suit: https://github.com/dobesv/node-binstruct


0 commentaires

1
votes

J'ai porté un convertisseur C ++ (fabriqué avec GNU GMP) avec un support float128 à EMSCRIPTEN de sorte qu'il fonctionnerait dans le navigateur: https://github.com/ysangkok/eeeee-754

EMSCRIPTEN produit JavaScript qui fonctionnera sur Node.js aussi. Vous obtiendrez la représentation flottante comme une chaîne de bits, cependant, je ne sais pas si c'est ce que vous voulez.


0 commentaires

1
votes

Dans JavaScript moderne (ECMAScript 2015), vous pouvez utiliser arraybuffer et float32array / float64array . J'ai résolu ceci comme ceci: xxx

ps: cela fonctionne dans Nodejs mais également en chrome, Firefox et Edge.


0 commentaires