2011-11-18 12 views
3

有沒有簡單的方法將結構轉換爲D中的字節數組?我在D文檔中找不到任何東西。將結構轉換爲D中的byte []或void []

+0

我不知道d,但我很好奇,什麼是'無效[]'? –

+0

@ R.MartinhoFernandes:在D中,'T []'是一個可以被認爲是'struct {T * ptr; size_t長度; }'。所以'void []'是一些任意數據的片斷,比如C中的'void *'。 – kennytm

+0

@KennyTM cool,謝謝:) –

回答

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

所有類型的動態數組(常量性仍然適用)隱式轉換爲void[]

2

這將構建對我來說:

struct Foo 
{ 
    int x; 
} 

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

,或者使用工會

union MyUnion { 
    MyStruct myStruct; 
    ubyte[MyStruct.sizeof] byteArray; 
} 
相關問題