2011-11-18 4 views
3

에서 변환 D에서 구조체를 바이트 배열로 변환하는 빠르고 쉬운 방법이 있습니까? D 문서에서 아무 것도 찾지 못했습니다.구조체를 byte [] 또는 void []로 D

+0

내가 D를 모르는 사용하는,하지만 난 궁금 하군요,'무효 []'무슨 일이야? –

+0

@ R.MartinhoFernandes : D에서'T []'는 슬라이스이며'struct {T * ptr; size_t 길이; }'. 그래서 void []는 C에서'void *'와 같은 임의의 데이터 조각입니다. – kennytm

+0

@KennyTM cool, thanks :) –

답변

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

동적 배열 (const와 여전히 적용) 암시 적으로 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; 
} 
관련 문제