在 c++ 中将双精度转换为 8 长度的字符数组

Convert double to 8 length char array in c++

本文关键字:字符 数组 c++ 双精度 转换      更新时间:2023-10-16

我想在 c++ 中将双精度数组转换为 8 长度的字符数组。问题是我想涵盖双精度类型的所有字节数(双精度在 c++ 中并不总是 8 字节长)。

char

数组仅用于存储双精度的字节,就好像 char type = 字节类型一样。

有什么想法吗?

是的,您始终可以将任何对象视为字节数组。要访问字节,请使用重新解释转换:

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 %02Xn", bytes[i]);   // assuming CHAR_BIT == 8
}

请注意,通常没有办法知道哪些字节是对象表示的一部分以及它们的实际含义是什么。例如,long double在某些平台上可能具有 12 或 16 的大小,但只有 10 个相关字节,您不知道哪个是哪个。尽管对于大小为 8 的double,可以合理地假设没有填充,并且字节以线性顺序构成 IEEE-754 表示形式。您的平台手册可能会告诉您。