Есть ли какой-нибудь быстрый и простой способ преобразования структуры в байтовый массив в D?На самом деле я ничего не нахожу в документации.
void[] arr; MyStruct s; arr = (&s)[0..1];
Динамические массивы всех типов (по-прежнему применяется константность) неявно преобразуются в void[].
void[]
Это строит для меня:
struct Foo { int x; } void main() { Foo foo; auto bytes = *(cast(byte[Foo.sizeof]*)(&foo)); }
auto byteArray = (cast(ubyte*) &myStruct)[0 .. myStruct.sizeof];
или использовать объединение
union MyUnion { MyStruct myStruct; ubyte[MyStruct.sizeof] byteArray; }