double hex string & hex corde à double

Ce que je suis en train de faire est de convertir un double en chaîne hexadécimale et puis de nouveau à double.

Le code suivant effectue la conversion double-chaîne hexadécimale.

char * double2HexString(double a)
{
   char *buf = new char[17]; //double is 8-byte long, so we have 2*8 + terminating 
char * double2HexString(double a)
{
char *buf = new char[17]; //double is 8-byte long, so we have 2*8 + terminating \0
char *d2c;
d2c = (char *) &a;
char *n = buf;
int i;
for(i = 0; i < 8; i++)
{
sprintf(n, "%02X", *d2c++);
n += 2;
} 
*(n) = '\0';
}
char *d2c; d2c = (char *) &a; char *n = buf; int i; for(i = 0; i < 8; i++) { sprintf(n, "%02X", *d2c++); n += 2; } *(n) = '
char * double2HexString(double a)
{
char *buf = new char[17]; //double is 8-byte long, so we have 2*8 + terminating \0
char *d2c;
d2c = (char *) &a;
char *n = buf;
int i;
for(i = 0; i < 8; i++)
{
sprintf(n, "%02X", *d2c++);
n += 2;
} 
*(n) = '\0';
}
'
; }

Cela semble fonctionner, cependant, je ne suis pas sûr de la façon de convertir la chaîne résultante arrière à double.
Veuillez informer 🙂

  • Êtes-vous en train d'imprimer les octets brutes, ou l'hexadécimal de la représentation du nombre? Aussi, à faire vous vous souciez de la portabilité de la chaîne elle-même (pas le code)?
  • Préférez-vous une solution qui est portable, facile à code/lire, ou rapide?
  • Je préfère la solution qui est facile à coder et à lire. J'ai besoin de cela pour passer des arguments entre les programmes. Être plus précis, premier programme engendre l'autre et passe à 2 doubles codé en hexadécimal de la chaîne. Strager, qu'entendez-vous par "la portabilité de la chaîne elle-même"?
  • La portabilité peut être un problème si vous utilisez cette sur deux HW plattforms parce que vous utilisez la forme binaire de données. Big Endian/Little Endian machine, ordre des octets de Réseau et ces choses doivent être prises en compte.
InformationsquelleAutor | 2009-01-30