Converteer Hex naar ASCII in Java

1. Overzicht

In dit korte artikel gaan we enkele eenvoudige conversies doen tussen de Hex- en ASCII-formaten.

In een typisch gebruiksscenario kan het hex-formaat worden gebruikt om zeer grote gehele getallen in een compacte vorm op te schrijven. AD45 is bijvoorbeeld korter dan het decimale equivalent 44357 en naarmate de waarden toenemen, wordt het lengteverschil nog duidelijker.

2. ASCII naar Hex

Laten we nu eens kijken naar onze opties om ASCII-waarden naar Hex te converteren:

  1. Converteer String naar char-array
  2. Cast elk char aan een int
  3. Gebruik Integer.toHexString () om het naar Hex te converteren

Hier is een snel voorbeeld van hoe we bovenstaande stappen kunnen bereiken:

privé statische String asciiToHex (String asciiStr) {char [] chars = asciiStr.toCharArray (); StringBuilder hex = nieuwe StringBuilder (); for (char ch: chars) {hex.append (Integer.toHexString ((int) ch)); } return hex.toString (); }

3. Hex naar ASCII-indeling

Laten we op dezelfde manier een conversie van Hex naar ASCII-indeling uitvoeren in drie stappen:

  1. Snijd de hexadecimale waarde in 2 char groepen
  2. Converteer het naar basis 16 Integer met Geheel getal.parseInt (hex, 16) en cast naar char
  3. Voeg alle tekens toe in een StringBuilder

Laten we naar een voorbeeld kijken hoe we bovenstaande stappen kunnen bereiken:

privé statische String hexToAscii (String hexStr) {StringBuilder output = nieuwe StringBuilder (""); for (int i = 0; i <hexStr.length (); i + = 2) {String str = hexStr.substring (i, i + 2); output.append ((char) Integer.parseInt (str, 16)); } return output.toString (); }

4. Test

Laten we tot slot, met behulp van deze methoden, een snelle test doen:

@Test openbare statische leegte whenHexToAscii () {String asciiString = "www.baeldung.com"; String hexEquivalent = "7777772e6261656c64756e672e636f6d"; assertEquals (asciiString, hexToAscii (hexEquivalent)); } @Test openbare statische leegte whenAsciiToHex () {String asciiString = "www.baeldung.com"; String hexEquivalent = "7777772e6261656c64756e672e636f6d"; assertEquals (hexEquivalent, asciiToHex (asciiString)); }

5. Conclusie

Tot slot hebben we gekeken naar de eenvoudigste manieren om te converteren tussen ASCII en Hex met behulp van Java.

De implementatie van al deze voorbeelden en codefragmenten is te vinden in het github-project - importeer gewoon het project en voer het uit zoals het is.