2009-10-08 27 views
10

我使用BinaryWriter類將二進制文件寫入磁盤。當我調用Write方法時,傳遞一個無符號短值,它將以小尾數格式寫入。例如:BinaryWriter Endian問題

bw.Write(0xA000); 

將二進制文件中的值寫入0x00 0xA0。有沒有辦法讓BInaryWriter使用Big Endian?如果沒有,是否有可能創建一個新類,繼承BinaryWriter並重載Write函數以使其寫入大端?

回答

23

您可以在MiscUtil中使用我的EndianBinaryWriter。這可以讓你指定你想要的排列順序。還有EndianBinaryReaderEndianBitConverter

EndianBinaryWriter writer = new EndianBinaryWriter(EndianBitConverter.Big, 
                stream); 
writer.Write(...); 

它不會從BinaryWriter得出,原因given in a blog post

+0

看起來正是我需要的(雖然我的項目是.NET 2.0)。我會試試看!謝謝! – Icemanind 2009-10-08 20:37:35

+1

有一個.NET 2.0版本的MiscUtil,你可以下載 - 它應該沒問題。 – 2009-10-08 20:38:31

+0

@JonSkeet:我知道這篇文章已經5年了,但是你的博客文章鏈接已經死了:/ – 2014-09-12 12:37:57