簡體   English   中英

C# 是否有辦法將具有 int 字段(byte、ushort、ulong 等)的對象作為字節數組編寫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM