Merge commit '4a8c8bf2baecd56605305e4c5879e22346df3243'
diff --git a/src/main/java/ch/hsr/geohash/GeoHash.java b/src/main/java/ch/hsr/geohash/GeoHash.java
index 0645b24..0e07ebb 100644
--- a/src/main/java/ch/hsr/geohash/GeoHash.java
+++ b/src/main/java/ch/hsr/geohash/GeoHash.java
@@ -141,6 +141,16 @@
 		return hash;
 	}
 
+	/**
+	 * This method uses the given number of characters as the desired precision
+	 * value. The hash can only be 64bits long, thus a maximum precision of 12
+	 * characters can be achieved.
+	 */
+        public static String geoHashStringWithCharacterPrecision(double latitude, double longitude, int numberOfCharacters) {
+                GeoHash hash = withCharacterPrecision(latitude, longitude, numberOfCharacters);
+                return hash.toBase32();
+        }
+
 	private GeoHash(double latitude, double longitude, int desiredPrecision) {
 		point = new WGS84Point(latitude, longitude);
 		desiredPrecision = Math.min(desiredPrecision, 64);
diff --git a/src/test/java/ch/hsr/geohash/GeoHashTest.java b/src/test/java/ch/hsr/geohash/GeoHashTest.java
index 9a11c70..f3eac24 100644
--- a/src/test/java/ch/hsr/geohash/GeoHashTest.java
+++ b/src/test/java/ch/hsr/geohash/GeoHashTest.java
@@ -165,6 +165,9 @@
 		}
 
 		assertEncodingWithCharacterPrecision(new WGS84Point(39.0247389581054, -76.5110040642321), 12, "dqcw4bnrs6s7");
+
+                String geoHashString = GeoHash.geoHashStringWithCharacterPrecision(point.getLatitude(), point.getLongitude(), 12);
+                assertEquals(fullStringValue, geoHashString);
 	}
 
 	private void assertEncodingWithCharacterPrecision(WGS84Point point, int numberOfCharacters, String stringValue) {