2010-07-09 2 views
5

Как насчет прогиба и т. Д.Есть ли тип данных .NET меньше байта?

+1

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

+0

@Shiftbit, очень полезная ссылка, спасибо. – Shimmy

+0

вы приветствуете. :) Его не тип данных .NET, но он позволит вам манипулировать битами в байте. Вы упомянули bools, вы также можете подумать об этом как полезное: Bit Fields - http://en.wikipedia.org/wiki/Bit_field – 2010-07-10 22:10:25

ответ

14

Нет. Даже если у вас есть массив булевых элементов, я считаю, что они указаны для каждого байта каждый.

Конечно, вы можете определить свои собственные типы данных, которые имеют менее 256 допустимых значений (например, Boolean), но вы не можете заставить его занимать меньше байта в памяти.

Как LBushkin отметил, существуют такие типы, как BitArray и BitVector32, которые эффективно упаковать несколько битов эффективно - вы можете написать свой собственный NybbleArray тип, если вы хотите.

+0

Итак, если бы я хотел определить тип Nibble, я должен сделать это с помощью Byte, так как он все еще лучше, чем массив из 4 булевых ... – Shimmy

+0

@Shimmy: Да, это так. –

+0

Эта таблица лучше, так как она сообщает вам размер каждого типа, в отличие от первого: http://msdn.microsoft.com/en-us/library/47zceaw7.aspx – Shimmy

1

Нет, байт является наименьшим.

Это может быть полезно: How can you nibble (nybble) bytes in C#?

+0

Не булевы меньше? – Shimmy

+0

Меньше памяти? Нет. Меньше возможных значений? Да. Если вы пытаетесь реализовать тип Nibble, лучшим способом было бы использовать BitArray/BitVector, как ранее упоминалось, или использовать битмаскирование в байтах. – Mandelbrot

4

Там нет родного типа данных меньше байт, однако, если вы хотите хранить и обрабатывать группу упакованных бит, вы можете использовать BitVector32 или BitArray.

+0

Я думаю, что я буду использовать простой байт, поскольку битвектор имеет длину 4 байта (Int32) (по крайней мере). – Shimmy

 Смежные вопросы

  • Нет связанных вопросов^_^