将char*转换为double - 作为字节

Tom*_*ica 3 c++ double casting c-strings

我有一个代表double的字节数组:

char number[8];
Run Code Online (Sandbox Code Playgroud)

我需要将它转换为实际的double(也有8个字节).基于我尝试过的建议,但它失败了:

std::cout<<(*((*double)number))<<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)

为什么会失败,我该怎么办?当然,我可以使用一些<<魔法提取数据,但我不想这样做 - 它会消耗内存并使代码过于健壮.

Dre*_*ann 8

为什么会失败?

你这里有一个错字.

std::cout<<(*((*double)number))<<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)

它应该是:

std::cout<<(*((double*)number))<<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

可以减少使用的括号数.

std::cout<< *(double*)number <<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)

应该使用C++强制转换而不是C强化转换,因此您可以清楚地了解自己在做什么.

std::cout<< *reinterpret_cast<double*>(number) <<" is my number.\n";
Run Code Online (Sandbox Code Playgroud)

  • @poitroae:这是第一个答案,它实际上解释了为什么原始代码不起作用. (2认同)