Added tools for converting dpid to uri and vice versa.
Modified device and link provider to use the new tools.
diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index e1e9ed7..5e63b84 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -1,5 +1,7 @@
 package org.onlab.util;
 
+import com.google.common.base.Strings;
+import com.google.common.primitives.UnsignedLongs;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
 import java.util.concurrent.ThreadFactory;
@@ -20,4 +22,34 @@
         return new ThreadFactoryBuilder().setNameFormat(pattern).build();
     }
 
+    /**
+     * Converts a string from hex to long.
+     *
+     * @param string hex number in string form; sans 0x
+     * @return long value
+     */
+    public static long fromHex(String string) {
+        return UnsignedLongs.parseUnsignedLong(string, 16);
+    }
+
+    /**
+     * Converts a long value to hex string; 16 wide and sans 0x.
+     *
+     * @param value long value
+     * @return hex string
+     */
+    public static String toHex(long value) {
+        return Strings.padStart(UnsignedLongs.toString(value, 16), 16, '0');
+    }
+
+    /**
+     * Converts a long value to hex string; 16 wide and sans 0x.
+     *
+     * @param value long value
+     * @param width string width; zero padded
+     * @return hex string
+     */
+    public static String toHex(long value, int width) {
+        return Strings.padStart(UnsignedLongs.toString(value, 16), width, '0');
+    }
 }