You don't need a whole function for this; a simple cast will suffice:
int x;
static_cast<char*>(static_cast<void*>(&x));
Any object in C++ can be reinterpreted as an array of bytes. If you want to actually make a copy of the bytes into a separate array, you can use std::copy
:
int x;
char bytes[sizeof x];
std::copy(static_cast<const char*>(static_cast<const void*>(&x)),
static_cast<const char*>(static_cast<const void*>(&x)) + sizeof x,
bytes);
Neither of these methods takes byte ordering into account, but since you can reinterpret the int
as an array of bytes, it is trivial to perform any necessary modifications yourself.