## 2016年8月24日 星期三

### [ Java 常見問題 ] Convert hex string to binary string

Source From Here
Question
I would like to convert a hex string to a binary string. For example, Hex 2 is 0010. Below is the code:
1. String HexToBinary(String Hex)
2. {
3.     int i = Integer.parseInt(Hex);
4.     String Bin = Integer.toBinaryString(i);
5.     return Bin;
6. }
However this only works for Hex 0 - 9; it won't work for Hex A - F because it uses int. Can anyone enhance it?

How-To
You need to tell Java that the int is in hex, like this:
1. String hexToBinary(String hex) {
2.     int i = Integer.parseInt(hex, 16);
3.     String bin = Integer.toBinaryString(i);
4.     return bin;
5. }
Another approach is to used exist library. For example, flib:
1. package test;
2.
3. import flib.util.HexByteKit;
4.
5. public class Test {
6.
7.     public static void main(String[] args) {
8.         String hexStrs[] = { "12F""3E" };
9.         try {
10.             for (int i = 0; i < hexStrs.length; i++) {
11.
12.                 String hxs = hexStrs[i];
13.                 String obs = HexByteKit.Hex2Bin(hxs);
14.                 System.out.printf("%s(%d)=%s\n", hxs,
15.                         Integer.parseInt(hxs, 16), obs);
16.             }
17.         } catch (Exception e) {
18.             e.printStackTrace();
19.         }
20.     }
21. }
Execution result:
12F(303)=000100101111
3E(62)=00111110

## 關於我自己

Where there is a will, there is a way!