Что я пытаюсь сделать, это преобразовать двойную строку в шестнадцатеричную, а затем вернуться в двойную.double to hex string & hex string to double
Следующий код преобразует строку double-to-hex.
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';
}
Это похоже на работу, однако я не уверен, как преобразовать результирующую строку обратно в двойную. Просьба пояснить:
Вы пытаетесь напечатать необработанные байты или шестнадцатеричное представление числа? Кроме того, вы заботитесь о переносимости самой строки (а не кода)? – strager
Вы предпочитаете решение, которое переносимо, легко кодировать/читать или быстро? – Sparr
Я предпочитаю решение, которое легко кодировать и читать. Мне нужно это, чтобы передать некоторые аргументы между программами. Быть более конкретным - первая программа порождает другую и передает ей 2 удвоения, закодированных в шестнадцатеричную строку. Стрэгер, что вы подразумеваете под «переносимостью самой строки»? – 2009-01-31 19:39:45