mirror of
https://github.com/AsamK/signal-cli
synced 2025-08-29 02:20:39 +00:00
47 lines
1.2 KiB
Java
47 lines
1.2 KiB
Java
package org.asamk.signal.util;
|
|
|
|
public class Hex {
|
|
|
|
private final static char[] HEX_DIGITS = {
|
|
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
|
|
};
|
|
|
|
private Hex() {
|
|
}
|
|
|
|
public static String toString(byte[] bytes) {
|
|
if (bytes.length == 0) {
|
|
return "";
|
|
}
|
|
|
|
var buf = new StringBuffer();
|
|
for (final var aByte : bytes) {
|
|
appendHexChar(buf, aByte);
|
|
buf.append(" ");
|
|
}
|
|
buf.deleteCharAt(buf.length() - 1);
|
|
return buf.toString();
|
|
}
|
|
|
|
public static String toStringCondensed(byte[] bytes) {
|
|
var buf = new StringBuffer();
|
|
for (final var aByte : bytes) {
|
|
appendHexChar(buf, aByte);
|
|
}
|
|
return buf.toString();
|
|
}
|
|
|
|
private static void appendHexChar(StringBuffer buf, int b) {
|
|
buf.append(HEX_DIGITS[(b >> 4) & 0xf]);
|
|
buf.append(HEX_DIGITS[b & 0xf]);
|
|
}
|
|
|
|
public static byte[] toByteArray(String s) {
|
|
var len = s.length();
|
|
var data = new byte[len / 2];
|
|
for (var i = 0; i < len; i += 2) {
|
|
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));
|
|
}
|
|
return data;
|
|
}
|
|
}
|