2010-07-09 32 views
5

半個字節如何等是否有.NET數據類型小於一個字節?

+1

BitOperations:http://www.blackwasp.co.uk/CSharpLogicalBitwiseOps.aspx – 2010-07-09 14:45:53

+0

@Shiftbit,非常有幫助的鏈接,謝謝。 – Shimmy 2010-07-10 18:56:26

+0

歡迎你。 :)它不是.NET數據類型,但它可以讓你操縱一個字節內的位。你提到bools,你可能也會認爲這有幫助:Bit Fields - http://en.wikipedia.org/wiki/Bit_field – 2010-07-10 22:10:25

回答

14

不,即使你有一組布爾值,我相信它們被指定佔用一個字節。

當然,您可以定義您自己的數據類型,其有效值少於256個(例如Boolean),但不能佔用內存中少於一個字節的數據類型。

正如LBushkin指出的,有幾種類型,如BitArrayBitVector32,可以有效地打包多個位 - 如果您願意,可以編寫自己的NybbleArray類型。

+0

所以如果我想定義一個Nibble類型,我應該用Byte做,因爲它仍然是比4個布爾值更好...... – Shimmy 2010-07-09 14:39:20

+0

@Shimmy:是的,沒錯。 – 2010-07-09 14:40:02

+0

這個表更好,因爲它告訴你每種類型的大小,不像第一個:) http://msdn.microsoft.com/en-us/library/47zceaw7.aspx – Shimmy 2010-07-09 14:41:55

1

不,字節是最小的。

這可能是有益的:How can you nibble (nybble) bytes in C#?

+0

布爾值不是更少? – Shimmy 2010-07-09 15:04:02

+0

內存不足?沒有更少的可能值?是。如果您嘗試實現Nibble類型,那麼最好的方法是使用前面提到的BitArray/BitVector或在字節上使用位掩碼。 – Mandelbrot 2010-07-09 15:12:54

4

沒有什麼比字節小沒有原生數據類型,但是如果你想存儲和操縱一組打包位的,你可以使用BitVector32BitArray

+0

我想我會使用簡單的字節,因爲BitVector是4字節(Int32)長度(至少)。 – Shimmy 2010-07-09 15:01:13

相關問題