Added openflow-codec and openflowj_netty from openflowplugin
[openflowjava.git] / third-party / openflow-codec / src / main / java / org / openflow / codec / util / HexString.java
1 package org.openflow.codec.util;
2
3 import java.math.BigInteger;
4
5 public class HexString {
6     /**
7      * Convert a string of bytes to a ':' separated hex string
8      *
9      * @param bytes
10      * @return "0f:ca:fe:de:ad:be:ef"
11      */
12     public static String toHexString(byte[] bytes) {
13         int i;
14         String ret = "";
15         String tmp;
16         for (i = 0; i < bytes.length; i++) {
17             if (i > 0)
18                 ret += ":";
19             tmp = Integer.toHexString(U8.f(bytes[i]));
20             if (tmp.length() == 1)
21                 ret += "0";
22             ret += tmp;
23         }
24         return ret;
25     }
26
27     public static String toHexString(long val) {
28         char arr[] = Long.toHexString(val).toCharArray();
29         String ret = "";
30         // prepend the right number of leading zeros
31         int i = 0;
32         for (; i < (16 - arr.length); i++) {
33             ret += "0";
34             if ((i % 2) == 1)
35                 ret += ":";
36         }
37         for (int j = 0; j < arr.length; j++) {
38             ret += arr[j];
39             if ((((i + j) % 2) == 1) && (j < (arr.length - 1)))
40                 ret += ":";
41         }
42         return ret;
43     }
44
45     /**
46      * Convert a string of hex values into a string of bytes
47      *
48      * @param values
49      *            "0f:ca:fe:de:ad:be:ef"
50      * @return [15, 5 ,2, 5, 17]
51      */
52
53     public static byte[] fromHexString(String values) {
54         String[] octets = values.split(":");
55         byte[] ret = new byte[octets.length];
56         int i;
57
58         for (i = 0; i < octets.length; i++)
59             ret[i] = Integer.valueOf(octets[i], 16).byteValue();
60         return ret;
61     }
62
63     public static long toLong(String values) {
64         long value = new BigInteger(values.replaceAll(":", ""), 16).longValue();
65         return value;
66     }
67 }