[英]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
而將任何實際的0xFF
為0xFFFF
。 讀取文件時,您必須牢記這一點並正確解碼。
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.