Co próbuję zrobić, to przekonwertować ciąg podwójny na szesnastkowy, a następnie z powrotem do podwójnego.podwójny łańcuch szesnastkowy i łańcuch szesnastkowy podwójny
Poniższy kod przekształca łańcuch podwójny na szesnastkowy.
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';
}
Wydaje się, że to działa, jednak nie jestem pewien, jak przekonwertować wynikowy ciąg z powrotem na podwójne. Proszę o poradę :)
Czy próbujesz wydrukować surowe bajty, czy szesnastkową reprezentację liczby? Czy zależy ci na przenośności samego napisu (a nie kodu)? – strager
Wolisz rozwiązanie przenośne, łatwe do kodowania/czytania lub szybkie? – Sparr
Preferuję rozwiązanie, które jest łatwe do kodowania i czytania. Potrzebuję tego, aby przekazać kilka argumentów między programami. Bardziej szczegółowy - pierwszy program spawnuje inny i przechodzi do niego 2 podwójne zakodowane w ciąg szesnastkowy. Strager, co masz na myśli mówiąc o "przenośności samego napisu"? –