簡體   English   中英

如何將uint16列表轉換為字節數組並寫入二進制文件,而無需添加零的空終止符

[英]How to convert list of uint16 to byte array and write to binary file without adding null terminators for zero

我有一個uint16列表,我正在嘗試將其寫入二進制文件。 我在列表的開頭確實有一個0,並為其添加了一個空終止符。如何將我的列表轉換為能夠正確寫入二進制文件?

  List<UInt16> xyz = new List<UInt16>();
  Byte[] byteArray = null;
  byteArray = xyz.SelectMany(i => BitConverter.GetBytes(i)).ToArray();
  Using(BinaryWriter Writer = new BinaryWriter(File.Create(path))
  {
  Writer.Write(byteArray);
  }

謝謝。

BinaryWriter只是將相應的字節寫入文件。 空終止符只是一個等於全零或'\\0'的字節。 如果不能有一個全零的字節,則需要對零進行編碼。 一種簡單的方法是將所有0x00都轉換為0xFF01而將任何實際的0xFF0xFFFF 讀取文件時,您必須牢記這一點並正確解碼。

  List<UInt16> xyz = new List<UInt16>();
  Byte[] byteArray = null;
  byteArray = xyz.SelectMany(i => BitConverter.GetBytes(i)).ToArray();
  using (BinaryWriter Writer = new BinaryWriter(File.Create("path")))
  {
     foreach (Byte b in byteArray)
     {
        if (b == 0)
        {
           Writer.Write(Byte.MaxValue);
           Writer.Write((Byte) 1);
        }
        else if (b == Byte.MaxValue)
        {
           Writer.Write(Byte.MaxValue);
           Writer.Write(Byte.MaxValue);
        }
        else
        {
           Writer.Write(b);
        }
     }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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