2012-05-31 25 views
1

我想在C#中表示一個10位無符號整數。我需要讀取並寫入BinaryStream並使用++一元運算符。我應該使用int作爲內部表示還是有更好的方法?.net中的10位數字

+0

您不能在流中敲擊十個位,流是基於字節的。您需要找到預期的格式。 –

回答

0

我會使用unsigned short作爲我的基本類型。寫入二進制流無論如何都會很有趣,因爲您需要打包四個這樣的數字才能在流中獲得大量字節(假設您想要打包)。

+0

'BinaryWriter'有一個'Write(bool value)'方法。我可以寫一個閱讀文章的擴展方法,所以它不應該是一個問題。 –

+0

@ vasek7編寫一個'bool'佔用一個完整的字節,因此將10位數字編寫爲十個布爾值是太浪費了。 – dasblinkenlight

+0

有沒有可能一點一點地讀/寫文件? –

0

根據你想要做什麼,使用10位的UInt16是一個很好的解決方案。您需要重載一些操作員,但應該是這樣。

另一種方法是使用BitArray並重新編寫++一元運算符。

+0

我需要從'BinaryStream'輕鬆寫入/讀取數據。這意味着我需要儘可能簡單的序列化。 –

+0

BitArray是可序列化的,int16很明顯是可序列化的,雖然使用int16有6位的開銷,這是巨大的(60%),但是可以使用打包和填充(第3組值和填充2'0 '),這可以使用int作爲容器輕鬆完成。 –