[英]Does C# have a way to write an object with int fields (byte, ushort, ulong, etc.) as a byte array?
我試圖將一個只有 int 字段(ushort、ulong、uint、int 等)的對象轉換為一個字節數組,其中每個 int 都按照它在對象中出現的順序作為一個字節。 例如,如果我有一個形式的對象
obj = {subobj: {uint firstProp: 500, ushort secondProp: 12}, byte lastProp: 5}
然后我希望字節數組是
{0, 0, 1, 244, 0, 12, 5}
我嘗試使用序列化創建這個字節數組(如本答案所述),但我注意到每個字節前后都有一堆東西。 基於這個網站,我相信這代表了我不想要的數據庫和文件。 我知道在 C++ 中,我可以使用reinterpret_cast<uint8_t*>(obj)
來獲得所需的結果。 在 C# 中是否有等效的方法來執行此操作?
你可以嘗試做這樣的事情:
foreach(int value in obj)
{
byte lsbOfLsb = (byte)value;
byte msbOfLsb = (byte)(value >> 8);
byte lsbOfMsb = (byte)(value >> 16);
byte msbOfMsb = (byte)(value >> 24);
}
顯然這只是想法。 您應該使用 for 循環而不是 foreach 並將所有元素解析為 int eg 。 另一種方法是檢查數據的類型
typeof(value) //op 1
// OR
if(value is int) //e.g.
然后根據需要轉換為字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.