Иногда требуется определить, какой порядок байтов используется в текущей архитектуре, и специально для такого случая у нас есть скромный рецепт, быстро переведенный с языка программирования C.
Для того, чтобы определить порядок байтов можно воспользоваться следующим кодом:
import std.stdio;
void main()
{
ushort x = 1;
writeln(
*(cast(ubyte*) &x) == 0 ?
"big-endian" :
"little-endian"
);
}
Данный код выводит именование порядка байтов в строковом виде и работает за счет стандартных операций приведения типа и взятия адреса: в частности, использование указателей позволяет обратиться к первому байту из изначального значения ushort (первому в порядке хранения в памяти), а приведение типа помогает сделать сравнение с 0 более доступным.
P.S: Возможно, объяснение слишком корявое, потому рекомендую обратиться сюда за более подробной информацией.