Fix truncation problem when using longlong implementation.
diff --git a/py/objint.c b/py/objint.c
index 012ce28..e1b67a1 100644
--- a/py/objint.c
+++ b/py/objint.c
@@ -115,7 +115,17 @@
         *fmt_size = 0;
         return *buf;
     }
-    fmt_int_t num = mp_obj_get_int(self_in);
+    fmt_int_t num;
+#if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_LONGLONG
+    mp_obj_int_t *self = self_in;
+    if (MP_OBJ_IS_TYPE(self_in, &mp_type_int)) {
+        // mp_obj_get_int truncates to machine_int_t
+        num = self->val;
+    } else
+#endif
+    {
+        num = mp_obj_get_int(self_in);
+    }
     char sign = '\0';
     if (num < 0) {
         num = -num;