It's not clear how base 8 works if you have multiple bytes. I assume you want to minimise the size of the message so you can do
// print in base 8 (or octal)
String text = new BigInteger(1, bytes).toString(8);
To do the reverse you can do
byte[] bytes = new BigInteger(text, 8).toByteArray();
if (bytes.length > 1 && bytes[0] == 0) {
// remove the first byte
}