Vous pouvez
int number =
OutputStream os =
os.write(number >> 16);
os.write(number >> 8);
os.write(number);
Pour lire
InputStream is =
int number = ((is.read() & 0xFF) << 16) | ((is.read() & 0xFF) << 8) | (is.read() & 0xFF)
Cependant, étant donné le coût d'un octet est si trivial, vous devez sauver énormément d'entre eux pour rendre la complexité supplémentaire vaut la peine il. Je l'ai seulement inclus ici pour votre information.
2 TB of disk space is worth about $100
1 GB is worth about 5 cents
1 MB is worth about 0.005 cents
1 KB is worth about 0.000005 cents.
1 B is worth about 0.000000005 cents.
À titre de comparaison, au salaire minimum, (Vous pouvez évaluer votre temps plus fortement)
1 minute of your time, 12 cents. ~2 GB.
1 second, 0.2 cents. ~40 MB.
1 key, 0.2 seconds, 0.04 cents ~8 MB.
1 blink. 0.05 seconds, 0.01 cents ~2 MB.
Cela rend la suggestion plutôt inquiétante que ne vaut pas appuyer sur une touche pour enregistrer moins de 8 MB. Vous pourriez même arriver à la conclusion que cela ne vaut pas un seul changement de code, sauf si elle économise 2 Go d'espace disque. : P
Vous pouvez utiliser des unions en C. _Sans code, ce n'est donc pas une réponse._ – khachik
Wow, vous pouvez écrire une valeur de trois octets dans un fichier en utilisant des unions sans code en C ?? Je suis impressionné. –
@Peter peut-être que je n'ai pas eu votre blague, mais l'OP a posé des questions sur le code, et je suis paresseux maintenant pour l'écrire :) – khachik