2010-07-09 68 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

相关问题