2017-01-27 3 views
-1

Ich habe versucht, den wenigen Beispielen im Web zu folgen, um Hex-Wert in Base64 zu konvertieren und fehlgeschlagen. Hex to Base64 convertionHex zu Base64 Konvertierung

http://tomeko.net/online_tools/hex_to_base64.php?lang=en

brauche ich ETAG Wert eines AWS Objekt und Google Cloud Storage MD5-Werte zu vergleichen. base64(eTag)=GCS_MD5. eTag:6a95b4dd5419f2ffb9f655309c931cb0 und MD5:apW03VQZ8v+59lUwnJMcsA== Wie kann ich Hex zu Base64 konvertieren?

Ich habe verschiedene Beispiele aus Stack-Overflow versucht, aber immer noch nicht.

public static void main(String[] args) throws IOException { 
    String hexadecimal = "6a95b4dd5419f2ffb9f655309c931cb0"; 
    System.out.println("hexadecimal: " + hexadecimal); 
    String binaryNum = hexToBin(hexadecimal); 
    System.out.println("" + binaryNum + ", length:" + binaryNum.length()); 
    byte[] encoded = Base64.encodeBase64(binaryNum.getBytes()); 
    byte[] decoded = Base64.decodeBase64(binaryNum.getBytes()); 
    System.out.println("encoded: " + Base64.isBase64(encoded)); 
    System.out.println("decoded: " + Base64.isBase64(decoded)); 
    System.out.println(Arrays.toString(encoded)); 
    String encodedString = new String(encoded); 
    System.out.println(binaryNum + " = " + encodedString); 

    String decodedString = new String(decoded); 
    System.out.println(binaryNum + " = " + decodedString); 

    System.out.println("ByteEncoding::" + base64Encode(binaryNum.getBytes())); 
    System.out.println("ByteDecoding::" + base64Decode(binaryNum)); 
} 

Antwort

2

Mit der gleichen Bibliothek scheinen Sie verwenden zu werden (Apache Commons Base64 angenommen, als die Standard-Base64-Klasse andere Methoden hat), hier einige kurze Code, der einen Hex-String an (eventuell) eine Base64-String konvertieren , und überprüfen Sie, dass es base64-codiert ist. Er wandelt auf den gleichen Wert base64 Sie gegeben haben, und dass die verknüpften Umrichterausgängen:

import java.math.BigInteger; 
import org.apache.commons.codec.binary.Base64; 

public class Main { 
    public static void main(String... args) { 
    String hexadecimal = "6a95b4dd5419f2ffb9f655309c931cb0"; 
    System.out.println("hexadecimal: " + hexadecimal); 

    BigInteger bigint = new BigInteger(hexadecimal, 16); 

    StringBuilder sb = new StringBuilder(); 
    byte[] ba = Base64.encodeInteger(bigint); 
    for (byte b : ba) { 
     sb.append((char)b); 
    } 
    String s = sb.toString(); 
    System.out.println("base64: " + s); 
    System.out.println("encoded: " + Base64.isBase64(s)); 
    } 
} 

//Output: 
//hexadecimal: 6a95b4dd5419f2ffb9f655309c931cb0 
//base64: apW03VQZ8v+59lUwnJMcsA== 
//encoded: true 

Wenn Sie nicht Apache Base64 importiert haben, das ist, was Probleme verursachen könnte. Es ist eine externe Bibliothek, also müssen Sie es von here herunterladen, fügen Sie es zu Ihrem Projekt in Ihrer IDE, dann importieren Sie wie im obigen Code.

0
byte[] decodedHex = Hex.decodeHex(hex); 
byte[] encodedHexB64 = Base64.codeBase64(decodedHex); 

von here