gpt4 book ai didi

c++ - double to hex string & hex string to double

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:39 27 4
gpt4 key购买 nike

我要做的是将 double 字符串转换为十六进制字符串,然后再转换回 double 。

以下代码将 double 字符串转换为十六进制字符串。

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';
}

这似乎可行,但是,我不确定如何将生成的字符串转换回 double 字符串。请指教:)

最佳答案

我很惊讶地看到没有人提出标准解决方案,即 ISO C99 标准中的 %a 格式说明符。

#include <iostream>
#include <string>
#include <stdio.h>

std::string double2hexastr(double d) {

char buffer[25] = { 0 };

::snprintf(buffer, 25, "%A", d); // TODO Check for errors

return buffer;
}

double hexastr2double(const std::string& s) {

double d = 0.0;

::sscanf(s.c_str(), "%lA", &d); // TODO Check for errors

return d;
}


int main() {

std::cout << "0.1 in hexadecimal: " << double2hexastr(0.1) << std::endl;

std::cout << "Reading back 0X1.999999999999AP-4, it is ";

std::cout << hexastr2double("0X1.999999999999AP-4") << std::endl;

}

关于c++ - double to hex string & hex string to double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com