Data Type Java

/*
 * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Modified by Tomas Gustavsson
 */
import java.io.*;
import java.math.BigInteger;
/**
 * This class implements a hex decoder, decoding a string with hex-characters into
 * the binary form.
 *
 * @version $Id: Hex.java,v 1.4 2004/04/15 07:28:36 hamgert Exp $
 *
 */
public class Hex {
    static private final char hex[] = {
        '0', '1', '2', '3', '4', '5', '6', '7',
        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
    };
    /**
     * Encodar binärt till hex
     *
     *@param dataStr bin-representation av data
     *@return Hex-representation av data
     **/
    public static String encode(byte[] dataStr) {
        StringWriter w = new StringWriter();
        for (int i = 0; i < dataStr.length; i++) {
            int b = dataStr[i];
            w.write(hex[((b >> 4) & 0xF)]);
            w.write(hex[((b >> 0) & 0xF)]);
        }
        return w.toString();
    }
    /**
     * Decodar hex till binärt
     *
     *@param dataStr Sträng innehållande hex-representation av data
     *@return byte[] innhållande binär representation av data
     **/
    public static byte[] decode(String dataStr) {
        if ((dataStr.length() & 0x01) == 0x01)
            dataStr = new String(dataStr + "0");
        BigInteger cI = new BigInteger(dataStr, 16);
        byte[] data = cI.toByteArray();
        return data;
    } //decode
    public static void main(String[] args) {
        if (args.length != 3) {
            System.out.println("Usage: HexStrToBin enc/dec  ");
            System.exit(1);
        }
        try {
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            InputStream in = new FileInputStream(args[1]);
            int len = 0;
            byte buf[] = new byte[1024];
            while ((len = in.read(buf)) > 0)
                os.write(buf, 0, len);
            in.close();
            os.close();
            byte[] data = null;
            if (args[0].equals("dec"))
                data = decode(os.toString());
            else {
                String strData = encode(os.toByteArray());
                data = strData.getBytes();
            }
            FileOutputStream fos = new FileOutputStream(args[2]);
            fos.write(data);
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } //main
} // Hex