2012-11-18 3 views
4

J'ai longtemps des tableaux multidimensionnels qui contiennent des valeurs qui vont de 0 - 16.Options pour le stockage plus petit que l'octet?

Actuellement, ils sont stockés comme:

byte[][,] example = new byte[1024][16,16]; 

Cela ajoute jusqu'à environ 300 Ko.

Existe-t-il un moyen plus efficace de stocker ces données? Comme un octet peut être compris entre 0 et 255, il convient parfaitement à une seule ligne de 16 valeurs comprises entre 0 et 15.

+0

Stockez deux octets dans un octet et utilisez une indexation plus sophistiquée. – siride

+0

La plage de données que les octets peuvent stocker est comprise entre 0 et 255, et non entre 0 et 256. Cela aurait pu être une faute de frappe de votre part. –

+2

Parlez-vous de valeurs entre 0 et 15, ou entre 0 et 16? Vous ne pouvez insérer que deux valeurs comprises entre 0 et 15 dans un seul octet. – CodesInChaos

Répondre

4

BitVector32 vous permet d'empaqueter 8 valeurs de 4 bits dans un entier de 32 bits. Puisque vous avez essentiellement 64 bits dans chaque dimension de votre tableau (16 lignes de 16 valeurs de 4 bits si je comprends bien), vous pourriez aussi être intéressé par this class.

+0

+1. Je ne savais pas à propos de cette classe dans .NET. – Neolisk

Questions connexes