Yeni bloğuma ilk post olarak seçtiğim bu küçük java konsol uygulamasını test amaçlı paylaşmayı uygun gördüm.. Eminim aranızda işine yarayacaklar vardır..

Bu uygulama basitçe java ile hex-string’i base64’e dönüştürmek için hazırlandı. Base64, hex-string’e göre daha geçerli bir format. Hemen her framework ile dönüştürme işlemi doğru ve performanslı olarak standart kütüphaneler ile yapılabiiniyor. Bu nedenle hex-string yerine bu encoding’in kullanılması daha doğru olduğunu düşünüyorum. Uygulamanın eksiksiz kaynak kodunu aşağıda paylaşıyorum.

Bu byte dizisini Base64’e çevirmek için Apache Commons Codec kütüphanesini kullandım. Ücretsiz olan bu kütüphaneyi indirip projenize dahil edebilirsiniz.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.commons.codec.binary.Base64;
public class Main {
  public static void main(String[] args) throws IOException {
    String hex;
    if(1 == args.length) { // hex string arguman olarak gönderildi.
      hex = args[0];
    } else { // hex string input olarak istenecek.
      System.out.print("Enter hex string: ");
      InputStreamReader converter = new InputStreamReader(System.in);
      BufferedReader in = new BufferedReader(converter);
      hex = in.readLine();
    }
    // Hazırladığımız metod ile byte dizisine çevirelim..
    byte[] bytes = hexStringToByteArray(hex);
    // Her dilde standart Base64 olarak encode edelim.
    String base64 = Base64.encodeBase64String(bytes);
    System.out.print("Base64: ");
    System.out.println(base64);
  }
  /**
  * Hex string'i verip byte dizisini aldığımız metodumuz..
  */
  private static byte[] hexStringToByteArray(String hex) {
    int len = hex.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
      data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
                           + Character.digit(hex.charAt(i+1), 16));
    }
    return data;
  }
}