В C ++:
double x;
char buf[sizeof(double)]; // your data
#include <algorithm>
// ...
std::copy(buf, buf + sizeof(double), reinterpret_cast<char*>(&x));
В С:
#include <string.h>
/* ... */
memcpy(&x, buf, sizeof(double));
В C ++ 11 вы также можете использовать std::begin(buf)
и std::end(buf)
в качестве границ (включая заголовок <iterator>
), и на обоих языках вы можете использовать sizeof(buf) / sizeof(buf[0])
(или просто sizeof(buf)
) для размер, предоставленный buf
на самом деле является массивом, а не просто указателем.