Le type Java byte
stocke 8 bits (= 1 octet) de données.
La chaîne de bits (nombre binaire) stockée dans «byte» est exprimée en hexadécimal et en décimal comme suit.
Chaîne de bits(Nombre binaire) | Hexadécimal | Nombre décimal |
---|---|---|
00000000 | 00 | 0 |
~ | ~ | ~ |
01111111 | 7F | 127 |
10000000 | 80 | -128 |
~ | ~ | ~ |
11111111 | FF | -1 |
Explique comment afficher en notation binaire et comment afficher en notation hexadécimale.
1: byte b = 10;
2: int i = Byte.toUnsignedInt(b); //Conversion non signée
3: String str = Integer.toBinaryString(i); //Obtenir une chaîne binaire
4: str = String.format("%8s", str).replace(' ', '0'); //0 rembourrage
5: System.out.println(str);
1: byte b = 10;
2: System.out.print(String.format("%02X", b));
Les résultats de sortie de chacun sont les suivants.
Nombre binaire: 00001010
Hexagone: 0A
Si vous comparez les méthodes de sortie, vous pouvez voir que la notation binaire nécessite diverses conversions.
Je vais expliquer quel type de conversion est effectué en notation binaire. Premier à partir de la deuxième ligne.
2ème ligne: Convertir du type byte
en type int
2: int i = Byte.toUnsignedInt(b); //Conversion non signée
À ce stade, le fait est que la conversion non signée est effectuée. La raison en est que les 24 bits supérieurs du type int sont mis à 0.
type d'octet(entier) | type int<Conversion non signée>(entier) | type int<Conversion signée>(entier) |
---|---|---|
00000001(1) | 00000000000000000000000000000001(1) | 00000000000000000000000000000001(1) |
11111111(-1) | 00000000000000000000000011111111(255) | 11111111111111111111111111111111(-1) |
Ligne 3: Récupère la chaîne binaire (chaîne de bits) de la variable de type ʻint`
3: String str = Integer.toBinaryString(i); //Obtenir une chaîne binaire
À ce stade, le 0 d'ordre supérieur est ignoré. C'est pourquoi nous faisions des conversions non signées.
type int(entier) | Chaîne binaire |
---|---|
00000000000000000000000000000001(1) | 1 |
00000000000000000000000011111111(255) | 11111111 |
4ème ligne: 0 complétant la chaîne de caractères acquise
4: str = String.format("%8s", str).replace(' ', '0'); //0 rembourrage
Plus précisément, après le remplissage avec des espaces en utilisant une chaîne formatée, les espaces sont «remplacés» par «0».
Quand je vérifiais le fonctionnement du programme, j'ai soudainement voulu vérifier le contenu de byte [], et quand j'ai cherché une méthode, je me suis débattu de manière inattendue, j'ai donc laissé un mémo sur la façon de la réaliser. C'est une petite histoire, mais j'espère que cela aide quelqu'un.
Recommended Posts