Hex2dec.java
/*
* $Id: Hex2dec.java,v 1.13 2008/02/25 08:35:52 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.matrix;
import org.mklab.nfc.matrix.DoubleMatrix;
/**
* 十六進数から十進数に変換するクラスです。
*
* <p>Hexadecimal number to decimal number
*
* @author koga
* @version $Revision: 1.13 $
* @see org.mklab.tool.matrix.Dec2hex
* @see org.mklab.tool.matrix.Hex2num
*/
public class Hex2dec {
/**
* メインメソッド
*
* @param args コマンドライン引数
*/
@SuppressWarnings("nls")
public static void main(String[] args) {
System.out.println("7B = " + hex2dec("7B"));
}
/**
* 16進数を10進数の整数に変換します。
*
* @param h 16進数
* @return 10進数 (decimal number)
*/
public static int hex2dec(String h) {
int n = h.length();
DoubleMatrix pp = DoubleMatrix.unit(1).appendRight(DoubleMatrix.ones(1, n - 1).multiply(16)).cumulativeProduct();
DoubleMatrix hh = new DoubleMatrix(1, n);
for (int i = 1; i <= n; i++) {
int hi = h.charAt(i - 1);
if (hi > 96) {
hh.setElement(i, hi - 87);
} else if (hi > 64) {
hh.setElement(i, hi - 55);
} else {
hh.setElement(i, hi - 48);
}
}
int d = (int)(hh.multiply(pp.flipLeftRight().transpose()).getDoubleElement(1));
return d;
}
}