No ogólnie double na char to troszkę nie jest możliwe, bo double ma 8 bajtów a char tylko 1, ale myślę, że na tablicę charów będzię OK. Przykładowy kod:
// Example program
#include <iostream>
int main()
{
double myValue = 12.3023;
std::cout << "Jako double przed konwersja: " << myValue << std::endl;
char buffer[sizeof(double)];
double* temp1 = (double*)&buffer;
*temp1 = myValue;
// tutaj możesz wysłać buffer gdzieś
// tutaj mamy tablicę znaków z zakodowanym doublem
std::cout << "Jako bajty (DEC): ";
for (std::size_t i = 0; i < sizeof(double); ++i)
std::cout << (int) buffer[i] << ' ';
std::cout << std::endl;
// dekodowanie na double
double* temp2 = (double*)&buffer;
double decodedValue = *temp2;
std::cout << "Jako double po zdekodowaniu: " << decodedValue << std::endl;
}
Działający przykład: cpp.sh/64e2w
Można to zrobić krócej, ale pokazują się ostrzeżenia, można też zastąpić casty w stylu C na reinterpret_cast.