faktycznie wersji commons-codec
i specyficznej Sun wersji wewnętrznej używasz zrobić dają takie same wyniki. Chyba myśleli, że podając różne wersje, ponieważ są niejawnie wywołanie toString()
na tablicy kiedy to zrobić:
System.out.println(org.apache.commons.codec.binary.Base64.encodeBase64(baos.toByteArray()));
który jest zdecydowanie nie wydrukować zawartość tablicy. Zamiast tego wydrukuje tylko adres odwołania do tablicy.
Napisałem następujący program, aby przetestować kodery względem siebie. Zobaczysz z wyjścia poniżej, że dają takie same wyniki:
import java.util.Random;
public class Base64Stuff
{
public static void main(String[] args) {
Random random = new Random();
byte[] randomBytes = new byte[32];
random.nextBytes(randomBytes);
String internalVersion = com.sun.org.apache.xerces.internal.impl.dv.util.Base64.encode(randomBytes);
byte[] apacheBytes = org.apache.commons.codec.binary.Base64.encodeBase64(randomBytes);
String fromApacheBytes = new String(apacheBytes);
System.out.println("Internal length = " + internalVersion.length());
System.out.println("Apache bytes len= " + fromApacheBytes.length());
System.out.println("Internal version = |" + internalVersion + "|");
System.out.println("Apache bytes = |" + fromApacheBytes + "|");
System.out.println("internal equal apache bytes?: " + internalVersion.equals(fromApacheBytes));
}
}
A oto wyjście z przebiegu go:
Internal length = 44
Apache bytes len= 44
Internal version = |Kf0JBpbxCfXutxjveYs8CXMsFpQYgkllcHHzJJsz9+g=|
Apache bytes = |Kf0JBpbxCfXutxjveYs8CXMsFpQYgkllcHHzJJsz9+g=|
internal equal apache bytes?: true
Która klasa 'Base64' w„lib słońca”Are You używając w swoim pierwszym przykładzie? – QuantumMechanic
com.sun.org.apache.xerces.internal.impl.dv.util.Base64 –