nativeToBigEndian

Converts the given value from the native endianness to big endian and returns it as a ubyte[n] where n is the size of the given type.

Returning a ubyte[n] helps prevent accidentally using a swapped value as a regular one (and in the case of floating point values, it's necessary, because the FPU will mess up any swapped floating point values. So, you can't actually have swapped floating point values as floating point values).

real is not supported, because its size is implementation-dependent and therefore could vary from machine to machine (which could make it unusable if you tried to transfer it to another machine).

@safe pure nothrow @nogc
nativeToBigEndian
(
T
)
(
const T val
)
if (
canSwapEndianness!T
)

Examples

int i = 12345;
ubyte[4] swappedI = nativeToBigEndian(i);
assert(i == bigEndianToNative!int(swappedI));

float f = 123.45f;
ubyte[4] swappedF = nativeToBigEndian(f);
assert(f == bigEndianToNative!float(swappedF));

const float cf = 123.45f;
ubyte[4] swappedCF = nativeToBigEndian(cf);
assert(cf == bigEndianToNative!float(swappedCF));

double d = 123.45;
ubyte[8] swappedD = nativeToBigEndian(d);
assert(d == bigEndianToNative!double(swappedD));

const double cd = 123.45;
ubyte[8] swappedCD = nativeToBigEndian(cd);
assert(cd == bigEndianToNative!double(swappedCD));

Meta