From d303c3390d187b1fcf47858e6b7bc8de43c22299 Mon Sep 17 00:00:00 2001
From: AlgaLaptop
Date: Mon, 15 Dec 2025 00:51:18 +0100
Subject: [PATCH] creartion du ficheir BytesUtils.java
---
PlaningDeTavail.md | 2 +-
.../DiagrameConvertisseurSimpli.plantuml | 0
.../DiagrameConvertisseurSimpli.png | Bin
...ameConvertisseur_Sprint1EtSprint2.plantuml | 0
...DiagrameConvertisseur_Sprint1EtSprint2.png | Bin
Avatar.png => asset/Avatar.png | Bin
.../iutfbleau/sae}/util/BitOutputStream.java | 2 +
.../iutfbleau/sae/util/BitinputStream.java} | 2 +
src/fr/iutfbleau/sae/util/ByteUtils.java | 89 ++++++++++++++++++
9 files changed, 94 insertions(+), 1 deletion(-)
rename DiagrameConvertisseurSimpli.plantuml => UML/DiagrameConvertisseurSimpli.plantuml (100%)
rename DiagrameConvertisseurSimpli.png => UML/DiagrameConvertisseurSimpli.png (100%)
rename DiagrameConvertisseur_Sprint1EtSprint2.plantuml => UML/DiagrameConvertisseur_Sprint1EtSprint2.plantuml (100%)
rename DiagrameConvertisseur_Sprint1EtSprint2.png => UML/DiagrameConvertisseur_Sprint1EtSprint2.png (100%)
rename Avatar.png => asset/Avatar.png (100%)
rename src/{ => fr/iutfbleau/sae}/util/BitOutputStream.java (99%)
rename src/{util/BitInputStream.java => fr/iutfbleau/sae/util/BitinputStream.java} (98%)
create mode 100644 src/fr/iutfbleau/sae/util/ByteUtils.java
diff --git a/PlaningDeTavail.md b/PlaningDeTavail.md
index d907fe8..cf275f8 100644
--- a/PlaningDeTavail.md
+++ b/PlaningDeTavail.md
@@ -51,7 +51,7 @@ Objectif : Mise en place des fondations techniques
|----------------|-------|----|
| `BitInputStream.java` | Lecture bit par bit | US-D1 |
| `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) |
### `src/vconverter/`
diff --git a/DiagrameConvertisseurSimpli.plantuml b/UML/DiagrameConvertisseurSimpli.plantuml
similarity index 100%
rename from DiagrameConvertisseurSimpli.plantuml
rename to UML/DiagrameConvertisseurSimpli.plantuml
diff --git a/DiagrameConvertisseurSimpli.png b/UML/DiagrameConvertisseurSimpli.png
similarity index 100%
rename from DiagrameConvertisseurSimpli.png
rename to UML/DiagrameConvertisseurSimpli.png
diff --git a/DiagrameConvertisseur_Sprint1EtSprint2.plantuml b/UML/DiagrameConvertisseur_Sprint1EtSprint2.plantuml
similarity index 100%
rename from DiagrameConvertisseur_Sprint1EtSprint2.plantuml
rename to UML/DiagrameConvertisseur_Sprint1EtSprint2.plantuml
diff --git a/DiagrameConvertisseur_Sprint1EtSprint2.png b/UML/DiagrameConvertisseur_Sprint1EtSprint2.png
similarity index 100%
rename from DiagrameConvertisseur_Sprint1EtSprint2.png
rename to UML/DiagrameConvertisseur_Sprint1EtSprint2.png
diff --git a/Avatar.png b/asset/Avatar.png
similarity index 100%
rename from Avatar.png
rename to asset/Avatar.png
diff --git a/src/util/BitOutputStream.java b/src/fr/iutfbleau/sae/util/BitOutputStream.java
similarity index 99%
rename from src/util/BitOutputStream.java
rename to src/fr/iutfbleau/sae/util/BitOutputStream.java
index 7220c83..9db7934 100644
--- a/src/util/BitOutputStream.java
+++ b/src/fr/iutfbleau/sae/util/BitOutputStream.java
@@ -1,3 +1,5 @@
+package fr.iutfbleu.sae.util;
+
import java.io.IOException;
import java.io.OutputStream;
diff --git a/src/util/BitInputStream.java b/src/fr/iutfbleau/sae/util/BitinputStream.java
similarity index 98%
rename from src/util/BitInputStream.java
rename to src/fr/iutfbleau/sae/util/BitinputStream.java
index ace61de..e81746c 100644
--- a/src/util/BitInputStream.java
+++ b/src/fr/iutfbleau/sae/util/BitinputStream.java
@@ -1,3 +1,5 @@
+package fr.iutfbleau.sae.util;
+
import java.io.IOException;
import java.io.InputStream;
diff --git a/src/fr/iutfbleau/sae/util/ByteUtils.java b/src/fr/iutfbleau/sae/util/ByteUtils.java
new file mode 100644
index 0000000..5145973
--- /dev/null
+++ b/src/fr/iutfbleau/sae/util/ByteUtils.java
@@ -0,0 +1,89 @@
+package fr.iutfbleau.sae.util;
+
+/**
+ * Classe utilitaire regroupant des opérations de conversion entre
+ * entiers et octets.
+ *
+ * Elle est utilisée pour encoder et décoder les champs binaires
+ * du format PIF (largeur, hauteur, tailles, etc.).
+ *
+ *
+ *
+ * Cette classe :
+ *
+ * - ne lit aucun fichier
+ * - n'écrit aucun fichier
+ * - ne manipule pas les bits individuellement
+ *
+ * Elle fournit uniquement des conversions octets ↔ entiers.
+ *
+ */
+public final class ByteUtils {
+
+ /**
+ * Constructeur privé empêchant l'instanciation.
+ *
+ * Cette classe est purement utilitaire et ne doit pas être instanciée.
+ *
+ */
+ private ByteUtils() {
+ // empêche l'instanciation
+ }
+
+ /**
+ * Convertit un entier non négatif en deux octets (ordre big-endian).
+ *
+ * L'octet de poids fort est placé en première position,
+ * suivi de l'octet de poids faible.
+ *
+ *
+ * @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).
+ *
+ * L'octet de poids fort est replacé dans les bits 15 à 8,
+ * puis combiné avec l'octet de poids faible.
+ *
+ *
+ * @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);
+ }
+}