Этот вопрос задается из любопытства, а не срочно. Я нашел некоторый код для преобразования объекта в байтовый массив (я думал, что он мне нужен в то время).
Используя commons-codec, я заметил, что закодированное шестнадцатеричное представление чистого байтового массива отличается от того, что я получил, если передал байтовый массив через метод "toByteArray" ниже. Я заметил, что более длинная версия заканчивается более короткой версией шестнадцатеричного строкового представления.
Инстинктивно это не кажется правильным, почему это происходит?
Что представляют собой дополнительные байты, найденные с помощью метода преобразования "toByteArray"?
Полагаю, это как-то связано с кодировкой?
Большое спасибо, я надеюсь, что это не слишком большой вопрос для новичка.
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import org.apache.commons.codec.binary.Hex;
public class Test {
public static void main(String[] args) throws IOException {
byte[] bytes = "Stackoverflow".getBytes();
System.out.println(Hex.encodeHexString(bytes));
System.out.println(Hex.encodeHexString(toByteArray(bytes)));
}
public static byte[] toByteArray(Object obj) throws IOException {
byte[] bytes = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
oos.flush();
oos.close();
bos.close();
bytes = bos.toByteArray();
return bytes;
}
}
РЕЗУЛЬТАТ
537461636b6f766572666c6f77
aced0005757200025b42acf317f8060854e002000078700000000d537461636b6f766572666c6f77