java: de l'écriture des entiers de fichier non signé 8 bits entier
En java, comment puis-je écrire des nombres entiers dans un fichier de sorte qu'ils sont non signé 8 bits entiers (dans la plage de 0 à 255) ? Suffit-il que les chiffres sont de type int et au sein de 0 à 255, ou dois-je les convertir en un autre type de premier? Je pense que c'est juste la même chose? Mais je ne suis pas sûr si quelque chose de drôle qui se passe quand ils sont placés dans le fichier...
OriginalL'auteur Joel Feodiyoup | 2012-05-25
Vous devez vous connecter pour publier un commentaire.
Signé vs non signé n'est qu'une question de comment les modèles de bits sont interprétés, pas les motifs de bits d'eux-mêmes.
Donc, si et aussi longtemps que votre entiers sont dans la gamme
0
à255
, vous pouvez simplement de la confiture en octets et écrire les octets d'un fichier.Cependant, parce que Java interprète octet modèles de bits comme étant signé, vous devez être prudent lors de la lecture dans de retour.
Par exemple, dire que vous avez l'entier
253
. C'est (en 32 bits):Si vous n':
puis
b
contiendra les bits:Si vous demandez à Java pour l'utiliser, Java prétendent qu'il est
-3
parce que lors de l'interprétation de bits signé,-3
est présentée comme le modèle de11111101
. Et donc, si vous écrivez que l'octet dans un fichier, les bits11111101
sera écrit, comme vous le souhaitez.De même, lorsque vous lisez de nouveau dans un octet lors de la lecture du fichier, l'octet de le lire, il en sera rempli avec le motif de bits
11111101
qui, encore une fois, Java s'interpréter comme-3
. Si vous ne peut pas viens de faire:parce que Java va interpréter
b
'contenu-3
et vous donner le nombre entier qui représente-3
comme un entier de 32 bits, qui sera:Au lieu de cela, vous avez besoin de masquer les choses à assurez-vous que l'entier vous vous retrouvez avec:
Donc,
OriginalL'auteur QuantumMechanic
DataOutputStream.writeByte()
va écrire leint
comme une valeur 1 octet.OriginalL'auteur NPE