La conversion de type de Chaîne binaire nombre de bits de java
J'ai une question sur la conversion de type de Chaîne binaire nombre de bits et d'écrire dans le fichier txt.
Par exemple, nous avons Chaîne comme "0101011" et que vous voulez convertir à peu de type "0101011"
puis écrire le fichier sur le disque.
Je voudrais savoir est-il de toute façon pour le convertir en string à peu..
j'étais à la recherche sur le web, ils suggèrent d'utiliser bitarray mais je ne suis pas sûr
grâce
Voulez-vous écrire le texte "0101011" du fichier, ou voulez-vous écrire l'octet 0101011?
Si nous suffit d'écrire "010101", je suppose que c'est une chaîne de type de fichier de sorte qu'il prend plus d'espace que les bits. Donc, dans le fichier java-nous obtenir de type chaîne nombre binaire "010101", puis convertir le type de bit alors que je voudrais écrire dans un fichier..
Si nous suffit d'écrire "010101", je suppose que c'est une chaîne de type de fichier de sorte qu'il prend plus d'espace que les bits. Donc, dans le fichier java-nous obtenir de type chaîne nombre binaire "010101", puis convertir le type de bit alors que je voudrais écrire dans un fichier..
OriginalL'auteur Dc Redwing | 2012-12-04
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Ensuite le motif de bits dans
value
correspond à l'interprétation binaire de la chaîne"0101011"
. Vous pouvez ensuite écrirevalue
à un fichier comme unbyte
(en supposant que la chaîne n'est pas plus de 8 chiffres binaires).MODIFIER Vous pouvez également utiliser
Byte.parseByte("0101011", 2);
. Cependant, les valeurs d'octets en Java sont toujours signés. Si vous avez essayé d'analyser une valeur de 8 bits avec 8ème ensemble de bits (comme"10010110"
, qui est de 150 décimal), vous obtiendrez unNumberFormatException
parce que les valeurs supérieures à +127 ne rentrent pas dans unbyte
. Si vous n'avez pas besoin de gérer les séquences de bits supérieur à"01111111"
, puisByte.parseByte
fonctionne tout aussi bien queInteger.parseInt
.Rappeler, cependant, que d'écrire un octet dans un fichier, vous utilisez
OutputStream.write(int)
, qui prend unint
(pasbyte
)—même si il écrit seulement un octet. Pourrait tout aussi bien aller avec unint
valeur de départ.Byte.parseByte
?Qui fonctionnerait tout aussi bien, sauf que vous n'a pas pu analyser valeurs d'octets avec le 8ème bit. En outre, l'écriture d'un octet à un
OutputStream
prend unint
argument (même si c'est seulement pour écrire un octet). J'ai l'habitude de simplement aller avec unint
pour commencer avec, mais il y a certainement un "auto-documentation" aspect à l'aide deByte.parseByte()
.OriginalL'auteur Ted Hopp
Vous pouvez essayer le code ci-dessous afin d'éviter les débordements des nombres.
vous pouvez voir la sortie
Que voulez-vous dire 'bits type"? Voulez-vous dire byte?
Ma réponse ci-dessus sera utile pour la conversion de grand nombre en format décimal, sans aucun débordement.
OriginalL'auteur Bhavik Ambani
OriginalL'auteur Satyanarayana