creartion du ficheir BytesUtils.java
This commit is contained in:
+1
-1
@@ -51,7 +51,7 @@ Objectif : Mise en place des fondations techniques
|
|||||||
|----------------|-------|----|
|
|----------------|-------|----|
|
||||||
| `BitInputStream.java` | Lecture bit par bit | US-D1 |
|
| `BitInputStream.java` | Lecture bit par bit | US-D1 |
|
||||||
| `BitOutputStream.java` | Écriture bit par bit | US-D2 |
|
| `BitOutputStream.java` | Écriture bit par bit | US-D2 |
|
||||||
| `ByteUtils.java` | Conversion int octets | — |
|
| `ByteUtils.java` | Conversion int octets | US-D3 et plus |
|
||||||
| `FileUtils.java` | Méthodes utilitaires fichiers | US-U5 (indirect) |
|
| `FileUtils.java` | Méthodes utilitaires fichiers | US-U5 (indirect) |
|
||||||
|
|
||||||
### `src/vconverter/`
|
### `src/vconverter/`
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 511 KiB After Width: | Height: | Size: 511 KiB |
@@ -1,3 +1,5 @@
|
|||||||
|
package fr.iutfbleu.sae.util;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
package fr.iutfbleau.sae.util;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
package fr.iutfbleau.sae.util;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Classe utilitaire regroupant des opérations de conversion entre
|
||||||
|
* entiers et octets.
|
||||||
|
* <p>
|
||||||
|
* Elle est utilisée pour encoder et décoder les champs binaires
|
||||||
|
* du format PIF (largeur, hauteur, tailles, etc.).
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* Cette classe :
|
||||||
|
* <ul>
|
||||||
|
* <li>ne lit aucun fichier</li>
|
||||||
|
* <li>n'écrit aucun fichier</li>
|
||||||
|
* <li>ne manipule pas les bits individuellement</li>
|
||||||
|
* </ul>
|
||||||
|
* Elle fournit uniquement des conversions octets ↔ entiers.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
public final class ByteUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur privé empêchant l'instanciation.
|
||||||
|
* <p>
|
||||||
|
* Cette classe est purement utilitaire et ne doit pas être instanciée.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
private ByteUtils() {
|
||||||
|
// empêche l'instanciation
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convertit un entier non négatif en deux octets (ordre big-endian).
|
||||||
|
* <p>
|
||||||
|
* L'octet de poids fort est placé en première position,
|
||||||
|
* suivi de l'octet de poids faible.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param value valeur entière à convertir (0 ≤ value ≤ 65535)
|
||||||
|
* @return tableau de deux octets : [octetFort, octetFaible]
|
||||||
|
* @throws IllegalArgumentException si la valeur ne tient pas sur 2 octets
|
||||||
|
*/
|
||||||
|
public static byte[] toBytes(int value) {
|
||||||
|
if (value < 0 || value > 0xFFFF) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"La valeur doit être comprise entre 0 et 65535"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] result = new byte[2];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Extraction de l'octet de poids fort :
|
||||||
|
* - décalage de 8 bits vers la droite
|
||||||
|
* - masquage pour ne conserver que les 8 bits utiles
|
||||||
|
*/
|
||||||
|
result[0] = (byte) ((value >>> 8) & 0xFF);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Extraction de l'octet de poids faible :
|
||||||
|
* - aucun décalage nécessaire
|
||||||
|
* - masquage pour conserver les 8 bits de droite
|
||||||
|
*/
|
||||||
|
result[1] = (byte) (value & 0xFF);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reconstruit un entier à partir de deux octets (ordre big-endian).
|
||||||
|
* <p>
|
||||||
|
* L'octet de poids fort est replacé dans les bits 15 à 8,
|
||||||
|
* puis combiné avec l'octet de poids faible.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param high octet de poids fort
|
||||||
|
* @param low octet de poids faible
|
||||||
|
* @return entier reconstruit à partir des deux octets
|
||||||
|
*/
|
||||||
|
public static int toInt(byte high, byte low) {
|
||||||
|
/*
|
||||||
|
* - masquage pour supprimer le signe des octets Java
|
||||||
|
* - décalage de l'octet fort vers la gauche
|
||||||
|
* - combinaison des deux octets par un OU binaire
|
||||||
|
*/
|
||||||
|
return ((high & 0xFF) << 8) | (low & 0xFF);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user