在D中将结构转换为byte []或void []

时间:2011-11-18 18:04:38

标签: data-structures d

有没有快速简便的方法将结构转换为D中的字节数组?我在D文档中找不到任何东西。

3 个答案:

答案 0 :(得分:3)

void[] arr;
MyStruct s;
arr = (&s)[0..1];

所有类型的动态数组(constness仍然适用)隐式转换为void[]

答案 1 :(得分:2)

这适合我:

struct Foo
{
    int x;
}

void main()
{
    Foo foo;
    auto bytes = *(cast(byte[Foo.sizeof]*)(&foo));
}

答案 2 :(得分:0)

auto byteArray = (cast(ubyte*) &myStruct)[0 .. myStruct.sizeof];

或使用union

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