Я использую этот код для преобразования String-Byte [], но я не уверен, поможет ли он вам, потому что я не знаю, есть ли у вас rawBytes в качестве источника или Java-String. Не могли бы вы уточнить?
public static String byteToHexString(byte b) {
String result = "";
result += Integer.toHexString((int)(b >> 4) & 0xf);
result += Integer.toHexString((int)(b) & 0xf);
return result;
}
public static String bytesToHexString(final byte[] byteArray) {
if (byteArray == null) {
return null;
}
String result = "";
for (int i = 0; i < byteArray.length; ++i) {
result += byteToHexString(byteArray[i]);
}
return result;
}
public static byte[] hexStringToBytes(final String hexString) {
if (hexString == null) {
return null;
}
byte[] result = new byte[hexString.length() / 2];
for (int idx = 0; idx < result.length; ++idx) {
int strIdx = idx * 2;
result[idx] = (byte) ((Character.digit(hexString.charAt(strIdx), 16) << 4)
+ Character.digit(hexString.charAt(strIdx + 1), 16));
}
return result;
}
Edit:
Если вы конвертируете String-byte [] и byte [] - String, я бы рекомендовал использовать параметр charset или charsetname для String.getBytes () и String-constructor. Например:
byte[] bytes = "text".getBytes("UTF-8");
String text = new String(bytes, "UTF-8");
Помните, что не каждая платформа или jvm могут поддерживать одинаковые кодировки. Для списка кодировок посмотрите здесь .
Если вы читаете байты из файла и хотите интерпретировать их как строку, вам также следует позаботиться об использовании правильной кодировки.