diff --git a/src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java b/src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java index b6228488dc76..07acefc9fb14 100644 --- a/src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java +++ b/src/main/java/com/thealgorithms/conversions/HexaDecimalToBinary.java @@ -1,43 +1,60 @@ package com.thealgorithms.conversions; -// Hex [0-9],[A-F] -> Binary [0,1] +/** + * Utility class for converting hexadecimal numbers to binary representation. + *

+ * A hexadecimal number consists of digits from {@code [0-9]} and {@code [A-F]} (case-insensitive), + * while binary representation uses only {@code [0, 1]}. + *

+ * This class provides methods to: + *

+ *

+ * Example: + *

+ * + *

This class assumes that the input hexadecimal string is valid.

+ */ public class HexaDecimalToBinary { + + /** + * Converts a hexadecimal string to its binary string equivalent. + * The binary output is padded to a minimum of 8 bits (1 byte). + * Steps: + *
    + *
  1. Convert the hexadecimal string to an integer.
  2. + *
  3. Convert the integer to a binary string.
  4. + *
  5. Pad the binary string to ensure it is at least 8 bits long.
  6. + *
  7. Return the padded binary string.
  8. + *
+ * + * @param numHex the hexadecimal string (e.g., "A1", "7F") + * @throws NumberFormatException if the input string is not a valid hexadecimal number + * @return the binary string representation, padded to 8 bits (e.g., "10100001") + */ public String convert(String numHex) { - // String a HexaDecimal: int conHex = Integer.parseInt(numHex, 16); - // Hex a Binary: String binary = Integer.toBinaryString(conHex); - // Output: return completeDigits(binary); } + /** + * Pads the binary string to ensure it is at least 8 bits long. + * If the binary string is shorter than 8 bits, it adds leading zeros. + * + * @param binNum the binary string to pad + * @return the padded binary string with a minimum length of 8 + */ public String completeDigits(String binNum) { - final int longBits = 8; - for (int i = binNum.length(); i < longBits; i++) { + final int byteSize = 8; + while (binNum.length() < byteSize) { binNum = "0" + binNum; } return binNum; } - - public static void main(String[] args) { - // Testing Numbers: - String[] hexNums = { - "1", - "A1", - "ef", - "BA", - "AA", - "BB", - "19", - "01", - "02", - "03", - "04", - }; - HexaDecimalToBinary objConvert = new HexaDecimalToBinary(); - - for (String num : hexNums) { - System.out.println(num + " = " + objConvert.convert(num)); - } - } } diff --git a/src/test/java/com/thealgorithms/conversions/HexaDecimalToBinaryTest.java b/src/test/java/com/thealgorithms/conversions/HexaDecimalToBinaryTest.java index 72a0a0174a93..1426eab64d2c 100644 --- a/src/test/java/com/thealgorithms/conversions/HexaDecimalToBinaryTest.java +++ b/src/test/java/com/thealgorithms/conversions/HexaDecimalToBinaryTest.java @@ -2,14 +2,44 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +/** + * Unit tests for the {@link EndianConverter} class. + */ public class HexaDecimalToBinaryTest { - @Test - public void testHexaDecimalToBinary() { - HexaDecimalToBinary hexaDecimalToBinary = new HexaDecimalToBinary(); - assertEquals("1111111111111111111111111111111", hexaDecimalToBinary.convert("7fffffff")); - assertEquals("101010111100110111101111", hexaDecimalToBinary.convert("abcdef")); + /** + * Parameterized test to validate the conversion from little-endian to big-endian. + * Hexadecimal values are passed as strings and converted to integers during the test. + */ + @ParameterizedTest + @CsvSource({ + "0x78563412, 0x12345678", "0x00000000, 0x00000000", "0x00000001, 0x01000000", + "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two's complement + "0x0000007F, 0x7F000000" // Positive boundary case + }) + public void + testLittleToBigEndian(String inputHex, String expectedHex) { + int input = (int) Long.parseLong(inputHex.substring(2), 16); // Convert hex string to int + int expected = (int) Long.parseLong(expectedHex.substring(2), 16); // Convert hex string to int + assertEquals(expected, EndianConverter.littleToBigEndian(input)); + } + + /** + * Parameterized test to validate the conversion from big-endian to little-endian. + */ + @ParameterizedTest + @CsvSource({ + "0x12345678, 0x78563412", "0x00000000, 0x00000000", "0x01000000, 0x00000001", + "0xFFFFFFFF, 0xFFFFFFFF", // -1 in two's complement + "0x7F000000, 0x0000007F" // Positive boundary case + }) + public void + testBigToLittleEndian(String inputHex, String expectedHex) { + int input = (int) Long.parseLong(inputHex.substring(2), 16); // Convert hex string to int + int expected = (int) Long.parseLong(expectedHex.substring(2), 16); // Convert hex string to int + assertEquals(expected, EndianConverter.bigToLittleEndian(input)); } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy