有沒有簡單的方法將結構轉換爲D中的字節數組?我在D文檔中找不到任何東西。將結構轉換爲D中的byte []或void []
3
A
回答
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;
}
相關問題
- 1. 如何將結構轉換爲D中的C指針?
- 2. 如何將指針轉換爲嵌套在結構中的void?
- 3. 將AxaptaContainer轉換爲Byte []或Base64
- 4. 編組僅用於將結構轉換爲Byte和ViceVersa嗎?
- 5. 無法將類型'void'隱式轉換爲'byte []'
- 6. 將ObjC轉換爲Swift - UnsafePointer <Void>不可轉換爲結構類型
- 7. 將IImage轉換爲結構
- 8. C# - 將uint轉換爲byte []
- 9. 將byte []轉換爲UInt16。
- 10. 將void *轉換爲一個指針結構?
- 11. 將字符串轉換爲byte []和byte []轉換爲JAVA中的字符串
- 12. 將byte []轉換爲Java中的Object File
- 13. 將int []轉換爲C#中的byte []
- 14. 不能在pthread_create函數中將void *(MyClass :: *)(void *)轉換爲void *(*)(void *)
- 15. 將Scala中的Seq [Byte]轉換爲byte []/InputStream
- 16. 在Android中將int轉換爲byte []
- 17. 將結構轉換爲JSON
- 18. 如何將void(myClass :: *)()轉換爲void(*)()
- 19. 將void *轉換爲std :: function <void()>
- 20. 在java中將byte []轉換爲long []
- 21. 將void *轉換爲std :: function
- 22. 將其轉換爲void *&
- 23. 將void *轉換爲stringstream
- 24. 將void *轉換爲std :: string
- 25. 將c中的結構轉換爲pywin32?
- 26. C#:轉換簡單結構的列表爲byte []
- 27. 在.NET中將int轉換爲byte [4]
- 28. 在VB.Net中將MemoryStream轉換爲Byte Array
- 29. 我需要將org.apache.spark.rdd.RDD [Array [Byte]]轉換爲Spark Streaming中的Array [Byte]
- 30. 將R2轉換爲Cohen's d
我不知道d,但我很好奇,什麼是'無效[]'? –
@ R.MartinhoFernandes:在D中,'T []'是一個可以被認爲是'struct {T * ptr; size_t長度; }'。所以'void []'是一些任意數據的片斷,比如C中的'void *'。 – kennytm
@KennyTM cool,謝謝:) –