将char*强制转换为双字节
Cast char* to double - as bytes
我有一个表示double:的字节数组
char number[8];
我需要将其转换为实际的double(也有8个字节(。根据建议,我尝试了一下,但失败了:
std::cout<<(*((*double)number))<<" is my number.n";
为什么失败了,我该怎么办?当然,我可以使用一些<<
魔术来提取数据,但我不想这样做——这会消耗内存,使代码过于健壮。
为什么失败了?
你这里有个打字错误。
std::cout<<(*((*double)number))<<" is my number.n";
应该是:
std::cout<<(*((double*)number))<<" is my number.n";
我该怎么办?
可以减少使用的括号数量。
std::cout<< *(double*)number <<" is my number.n";
您应该使用C++强制转换,而不是C强制转换,所以您正在做的事情很清楚。
std::cout<< *reinterpret_cast<double*>(number) <<" is my number.n";
如果使用c++,则使用reinterpret_cast。正如你所看到的,C++具有更多的表达能力。
// cool c++
double value = *reinterpret_cast<double*>(number);
// c style
double value = (*((double*)number));
char number[8];
double d;
// number is assumed to be filled with a buffer representing a double.
memcpy(&d, &number, sizeof(double));
std::cout << d;
不确定是否需要的大小。当假设一个双字节是8字节时,已经造成了损害。我不知道标准中对双打有什么规定。
相关文章:
- 如何在连接器 C++ 中将原始字节转换为字符串
- 将 char[] 数组转换为字节,然后将字节转换为 int,反之亦然
- 如何在 c++ 中将字节转换为 ASCII 十六进制表示形式?
- OPENSSL 将二进制字节转换为 SHA256 C++
- 如何将音频字节转换为样本
- C++ 如何将 char[] 中的多个字节转换为一个整数
- 删除字节转换的char*
- 如何将二进制字节转换为可打印的数值
- 将 MFRC522 UID 十六进制字节转换为可打印的小数
- 用c++将十六进制字符串切碎,并将中的每个字节转换为十进制
- Qt是否有一种将字节转换为int的方法,反之亦然
- UCS-4 到 Solaris 上的多字节转换
- 使用 C++ 将四个字节转换为整数
- 将字节转换为无符号整数的最快方法
- 如何在mac上将多字节转换为宽字符
- 将字节转换为整数
- 在Arduino错误时将4个字节转换为长字节
- 更正从C++到delphi AnsiString的字节转换
- 用C++将4个字节转换为3个字节
- 正在将字节转换为char数组,然后再转换回来