【发布时间】:2010-10-04 14:11:55
【问题描述】:
我要做的是将双精度转换为十六进制字符串,然后再转换回双精度。
以下代码将双精度字符串转换为十六进制字符串。
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';
}
这似乎可行,但是,我不确定如何将生成的字符串转换回双精度。 请指教:)
【问题讨论】:
-
您是要打印原始字节还是数字的十六进制表示?另外,您是否关心字符串本身(而不是代码)的可移植性?
-
您更喜欢便携、易于编码/阅读还是快速的解决方案?
-
我更喜欢易于编码和阅读的解决方案。我需要这个在程序之间传递一些参数。更具体一点——第一个程序生成另一个程序并将 2 个编码为十六进制字符串的双精度数传递给它。 Strager,“字符串本身的可移植性”是什么意思?
-
如果在两个不同的硬件平台上使用它,可移植性可能会成为问题,因为您使用数据的二进制形式。 Big Endian/Little Endian machine, Network byte order and such things应该考虑在内。