Il existe de nombreuses façons de convertir le système binaire en Java. Parmi eux, il existe des cours d'emballage pour les hexadécimaux de décimal octaux binaires de base communs, etc., qui n'ont pas besoin d'être mis en œuvre via des algorithmes à deux out. Les détails sont les suivants:
Tout d'abord, les méthodes de conversion binaire les plus simples sont:
Convertir la décimale en hexadécimal:
String Integer.tohexString (int i)
Convertir la décimale en octal
String Integer.tooctalString (int i)
Convertir la décimale en binaire
String Integer.TobinaryString (int i)
Convertir hexadécimal en décimal
Integer.ValueOf ("FFFF", 16) .toString () // Impossible de gérer le préfixe 0x
Convertir octal en décimal
Integer.ValueOf ("76", 8) .toString () // Prefix 0 peut être traité pour être binaire à décimal
Integer.Valueof ("0101", 2) .toString ()
Existe-t-il un moyen de convertir directement 2, 8, hexadécimal en décimal?
classe java.lang.integer
parseInt (String S, int radix)
Utilisez la cardinalité spécifiée par le deuxième paramètre pour analyser le paramètre de chaîne dans un entier signé.
Exemples de JDK:
ParseInt ("0", 10) Renvoie 0
Parseint ("473", 10) Renvoie 473
ParseInt ("- 0", 10) Renvoie 0
ParseInt ("- FF", 16) Renvoie -255
Parseint ("1100110", 2) Renvoie 102
Parseint ("2147483647", 10) Renvoie 2147483647
Parseint ("- 2147483648", 10) Renvoie -2147483648
ParseInt ("2147483648", 10) Throwsa NumberFormatexception
PARSEIINT ("99", Throwsa NumberFormatexception
Parseint ("Kona", 10) Throwsa NumberFormatexception
Parseint ("Kona", 27) Renvoie 411787
Comment écrire une conversion binaire (deux, huit, seize) sans algorithme
Integer.TobinaryString
Entier.tooctalstring
Entier.tohexstring
Présentez ensuite la conversion des nombres d'octets et hexadécimaux en Java
Analyse principale:
L'octet en Java est composé de 8 bits, et l'hexadécimal est l'état de 16, qui est représenté par 4 bits car 24 = 16. Nous pouvons donc convertir un octet en deux caractères hexadécimaux, c'est-à-dire convertir les 4 chiffres 4 et bas en caractères hexadécimaux correspondants, et combiner ces deux cordes hexadécimales pour obtenir la chaîne hexadécimale d'octet. De même, la conversion opposée convertit également deux caractères hexadécimaux en un octet.
En Java, il y a deux idées principales pour convertir les octets et hexadécimal:
1. Lorsque l'octet binaire est converti en hexadécimal, effectuez le fonctionnement "&" de l'octet élevé et 0xf0, puis déplacez la gauche par 4 bits pour obtenir l'hexadécimal A de l'octet élevé; Effectuez le fonctionnement "&" de l'octet bas et 0x0f pour obtenir l'hexadécimal B des basse et des chiffres, et assemblez deux nombres hexadécimaux en un morceau d'AB, qui est la représentation hexadécimale de l'octet.
2. Lorsque l'hexadécimal en octets binaires, déplacez le nombre décimal correspondant au caractère hexadécimal vers le droit 4 pour obtenir l'octet élevé A; Faites le "|" Fonctionnement de la décimale Numéro B et A du caractère hexadécimal correspondant à l'octet bas pour obtenir la représentation binaire hexadécimale
L'une des fonctions de conversion est la suivante:
/ ** * * @Param Bytes * @return Convert Binary en HexaDecimal Caractor Sortie * / </span> String statique privé hexstr = "0123456789AbcDef"; // Global public static String binaryToHexString (byte [] bytes) {String result = ""; String hex = ""; pour (int i = 0; i <bytes.length; i ++) {// octets sont 4 bits plus élevés <strong> hex = string.valueof (hexstr.charat ((octets [i] & 0xf0) >> 4)); </strong> // Les octets sont 4 bits inférieurs <strong> hex + = string.valueof (hexstr.charat (octets [i] & 0x0f)); </strong> résultat + = hex; } Retour Résultat; } / ** * * @param hexstring * @return convertir hexadécimal en byte byte * / byte statique public [] hexstringtobinary (String hexstring) {// La longueur de hexstring est arrondi par 2, comme la longueur des octets int len = hexString.Length () / 2; octet [] octets = nouveau octet [len]; octet élevé = 0; // L'octet élevé à quatre bits octet bas = 0; // le byte à quatre bits pour (int i = 0; i <len; i ++) {// transférer vers les quatre bits droits pour obtenir le bit élevé = (octet) ((hexstr.indexof (hexstring.charat (2 * i)) << 4); Low = (byte) hexstr.indexof (hexstring.charat (2 * i + 1)); octets [i] = (octet) (élevé | bas); // statut ou opération élevé} RETOUR les octets; }} Il existe également une méthode similaire:
<span style = "Font-Size: 14px;"> * Convertir l'octet [] en chaîne hexagonale. Ici, nous pouvons convertir l'octet en int, puis utiliser Integer.tohexString (int) pour convertir en chaîne hexagonale.
* @param src byte [] data * @return hex string * / public static String byTestoHExString (byte [] src) {stringBuilder StringBuilder = new StringBuilder (""); if (src == null || src.length <= 0) {return null; } pour (int i = 0; i <src.length; i ++) {int v = src [i] & 0xff; String hv = Integer.tohexString (v); if (hv.length () <2) {stringBuilder.append (0); } stringBuilder.append (hv); } return StringBuilder.ToString (); } / ** * Convertir la chaîne hexagonale en octet [] * @param hexstring la chaîne hexagonale * @return byte [] * / public static octet [] hexstringtoBytes (String hexstring) {if (hexString == null || hexString.equals ("")) {return null; } hexstring = hexstring.touppercase (); int length = hexstring.length () / 2; char [] hexchars = hexstring.tocharay (); octet [] d = nouveau octet [longueur]; pour (int i = 0; i <length; i ++) {int pos = i * 2; d [i] = (byte) (chartoByte (hexchars [pos]) << 4 | chartoByte (hexchars [pos + 1])); } return d; } / ** * Convertir char en byte * @param c char * @return byte * / octet privé chartoByte (char c) {return (byte) "0123456789AbcDef" .Indexof (c); } </span>Les deux méthodes sont similaires, veuillez noter ici
Ce qui précède est une chaîne qui convertit l'octet [] en hexadécimal. Notez que b [i] & 0xff effectue un calcul d'un octet et 0xff, puis utilise Integer.tohexstring pour obtenir la chaîne hexadécimale. Tu peux voir ça
L'opération B [i] & 0xff est toujours un int, alors pourquoi avez-vous besoin d'effectuer une opération INT avec 0xFF? Direct Integer.tohexString (b [i]);, ne peut pas forcer l'octet à être converti? La réponse est non.
La raison en est:
1. La taille de l'octet est de 8 bits et la taille de INT est de 32 bits
2. Le système en deux parties de Java utilise le complément
Par conséquent, lorsque les nombres négatifs sont et avec des nombres négatifs, les nombres négatifs rempliront automatiquement 1, ce qui entraînera des erreurs
0xFF est la chirurgie plastique par défaut, donc lorsqu'un octet et 0xff sont impliqués, l'octet sera d'abord converti en opération de chirurgie plastique, de sorte que les 24 bits élevés dans le résultat seront toujours éliminés par 0, donc le résultat est toujours ce que nous voulons.
Il existe des méthodes de résumé en ligne:
Convertir la chaîne en méthode de chaîne hexadécimale 1:
/ ** * Convertir la chaîne en chaîne hexadécimale * / chaîne statique publique str2hexstr (string str) {char [] chars = "0123456789abcdef" .tocharArray (); StringBuilder sb = new StringBuilder (""); octet [] bs = str.getBytes (); int bit; for (int i = 0; i <bs.length; i ++) {bit = (bs [i] & 0x0f0) >> 4; SB.APPEND (Chars [bit]); bit = bs [i] & 0x0f; SB.APPEND (Chars [bit]); } return sb.toString (); }Convertir la chaîne hexadécimale en méthode du tableau 1:
/ ** * Convertir HexString en tableau d'octets * @param hexstring * @return byte [] * / public static byte [] hexStringtoByte (String hex) {int len = (hex.length () / 2); octet [] résultat = nouveau octet [len]; char [] achar = hex.tocharArray (); pour (int i = 0; i <len; i ++) {int pos = i * 2; résultat [i] = (byte) (Tobyte (achar [pos]) << 4 | tobyte (achar [pos + 1])); } Retour Résultat; } private static int tobyte (char c) {byte b = (byte) "0123456789abcdef" .Indexof (c); retour b; }Convertir le tableau en méthode de chaîne hexadécimale 1:
/ ** * Convertir le tableau en chaîne hexagonale * @param byte [] * @return hexstring * / public static final String byTestoHExString (byte [] barray) {StringBuffer sb = new StringBuffer (barray.length); String STEMP; for (int i = 0; i <Barray.length; i ++) {STEMP = Integer.tohexString (0xff & Barray [i]); if (stemp.length () <2) sb.append (0); SB.APPEND (STEMP.TOUPPERCASE ()); } return sb.toString (); }Méthode 2 de la conversion du tableau d'octets [] en chaîne hexadécimale:
/ ** * Convertir le tableau en chaîne hexagonale * @param byte [] * @return hexstring * / public static String tohexstring1 (byte [] b) {stringBuffer tamper = new StringBuffer (); for (int i = 0; i <b.length; ++ i) {buffer.append (tohexstring1 (b [i])); } return buffer.toString (); } String statique publique TOHEXSTRING1 (BYTE B) {String S = Integer.tohexString (B & 0xFF); if (s.Length () == 1) {return "0" + s; } else {return s; }}Méthode 1 de la chaîne de conversion de chaîne hexadécimale:
/ ** * Convertir HexString en chaîne * @param hexstring * @return String * / public static String hexstr2str (string hexstr) {String str = "0123456789abcdef"; char [] hexs = hexstr.tocharArray (); octet [] octets = nouveau octet [hexstr.length () / 2]; int n; for (int i = 0; i <bytes.length; i ++) {n = str.indexof (hexs [2 * i]) * 16; n + = str.indexof (hexs [2 * i + 1]); octets [i] = (byte) (n & 0xff); } return new String (octets); }Méthode 2 de la conversion des chaînes en chaînes hexadécimales:
/ ** * hexstring convert string * @param hexstring * @return String * / public static string toStringhex (String s) {byte [] bakeyword = new byte [s.Length () / 2]; for (int i = 0; i <bakeyword.length; i ++) {try {bakeyword [i] = (byte) (0xff & Integer.parseInt (s.SubString (i * 2, i * 2 + 2), 16)); } catch (exception e) {e.printStackTrace (); }} try {s = new String (BakeyWord, "utf-8"); // utf-16le: pas} catch (exception e1) {e1.printStackTrace (); } return s; }L'article ci-dessus sur la conversion de Java, la méthode de conversion de l'octet et de l'hexadécimal sont tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.