Преобразовать структуру в byte [] или void [] в D - PullRequest
3 голосов
/ 18 ноября 2011

Есть ли какой-нибудь быстрый и простой способ преобразования структуры в байтовый массив в D?На самом деле я ничего не нахожу в документации.

Ответы [ 3 ]

3 голосов
/ 18 ноября 2011
void[] arr;
MyStruct s;
arr = (&s)[0..1];

Динамические массивы всех типов (по-прежнему применяется константность) неявно преобразуются в void[].

2 голосов
/ 18 ноября 2011

Это строит для меня:

struct Foo
{
    int x;
}

void main()
{
    Foo foo;
    auto bytes = *(cast(byte[Foo.sizeof]*)(&foo));
}
0 голосов
/ 25 июня 2014
auto byteArray = (cast(ubyte*) &myStruct)[0 .. myStruct.sizeof];

или использовать объединение

union MyUnion {
    MyStruct myStruct;
    ubyte[MyStruct.sizeof] byteArray;
}
...