我想在c ++中将double转换为8长度的char数组。问题是我想要覆盖double类型的所有字节数(在c ++中double并不总是8字节长)。
char数组仅用于存储double的字节,就像char type = byte type。
有什么想法吗?
答案 0 :(得分:1)
是的,您始终可以将任何对象视为字节数组。要访问字节,请使用reinterpret-cast:
T x; // any object
unsigned char const * bytes = reinterpret_cast<unsigned char const *>)(&x);
for (std::size_t i = 0; i != sizeof(T); ++i)
{
std::fprintf("Byte %zu is %02X\n", bytes[i]); // assuming CHAR_BIT == 8
}
请注意,通常不知道哪个字节是对象表示的一部分以及它们的实际含义是什么。例如,某些平台上的long double
可能大小为12或16,但只有10个相关字节,并且您不知道哪个是哪个。虽然对于大小为8的double
,假设没有填充并且字节按线性顺序组成IEEE-754表示是合理的。您的平台手册可能会告诉您。