]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/util/Hex.java
596f23a96a64c658de0490432bd5fc7a107df2cd
[signal-cli] / src / main / java / org / asamk / signal / util / Hex.java
1 package org.asamk.signal.util;
2
3 public class Hex {
4
5 private final static char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
6
7 private Hex() {
8 }
9
10 public static String toString(byte[] bytes) {
11 if (bytes.length == 0) {
12 return "";
13 }
14
15 var buf = new StringBuffer();
16 for (final var aByte : bytes) {
17 appendHexChar(buf, aByte);
18 buf.append(" ");
19 }
20 buf.deleteCharAt(buf.length() - 1);
21 return buf.toString();
22 }
23
24 public static String toStringCondensed(byte[] bytes) {
25 var buf = new StringBuffer();
26 for (final var aByte : bytes) {
27 appendHexChar(buf, aByte);
28 }
29 return buf.toString();
30 }
31
32 private static void appendHexChar(StringBuffer buf, int b) {
33 buf.append(HEX_DIGITS[(b >> 4) & 0xf]);
34 buf.append(HEX_DIGITS[b & 0xf]);
35 }
36
37 public static byte[] toByteArray(String s) {
38 var len = s.length();
39 var data = new byte[len / 2];
40 for (var i = 0; i < len; i += 2) {
41 data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));
42 }
43 return data;
44 }
45 }