From 942e01af3a411bd7ad9e615f36a85bfeda5b148b Mon Sep 17 00:00:00 2001
From: fummicc1 <fumiya.tennis1@gmail.com>
Date: Sun, 24 Nov 2024 18:56:02 +0900
Subject: [PATCH] Keep binary length

---
 Sources/GeoHashFramework/GeoHash.swift | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/Sources/GeoHashFramework/GeoHash.swift b/Sources/GeoHashFramework/GeoHash.swift
index 4f926b2..427dc25 100644
--- a/Sources/GeoHashFramework/GeoHash.swift
+++ b/Sources/GeoHashFramework/GeoHash.swift
@@ -224,14 +224,26 @@ extension GeoHash {
         let southWest = combineBits(latitude: south, longitude: west)
 
         return [
-            GeoHash(binary: combineBits(latitude: north, longitude: longitudeBits), precision: precision),
+            GeoHash(
+                binary: combineBits(latitude: north, longitude: longitudeBits),
+                precision: precision
+            ),
             GeoHash(binary: northEast, precision: precision),
-            GeoHash(binary: combineBits(latitude: latitudeBits, longitude: east), precision: precision),
+            GeoHash(
+                binary: combineBits(latitude: latitudeBits, longitude: east),
+                precision: precision
+            ),
             GeoHash(binary: southEast, precision: precision),
-            GeoHash(binary: combineBits(latitude: south, longitude: longitudeBits), precision: precision),
+            GeoHash(
+                binary: combineBits(latitude: south, longitude: longitudeBits),
+                precision: precision
+            ),
             GeoHash(binary: southWest, precision: precision),
-            GeoHash(binary: combineBits(latitude: latitudeBits, longitude: west), precision: precision),
-            GeoHash(binary: northWest, precision: precision)
+            GeoHash(
+                binary: combineBits(latitude: latitudeBits, longitude: west),
+                precision: precision
+            ),
+            GeoHash(binary: northWest, precision: precision),
         ]
     }
 
@@ -240,7 +252,9 @@ extension GeoHash {
         if let decimal = Int(bits, radix: 2) {
             let moved = decimal + delta
             // 11 -> 1110
-            return String(moved, radix: 2)
+            // keep bits length
+            let binary = String(moved, radix: 2)
+            return binary.padding(toLength: bits.count, withPad: "0", startingAt: 0)
         }
         return bits
     }