diff --git a/py/objint.c b/py/objint.c
index e1b67a1..05269ce 100644
--- a/py/objint.c
+++ b/py/objint.c
@@ -261,6 +261,43 @@
     return MP_OBJ_NULL;
 }
 
+STATIC mp_obj_t int_from_bytes(uint n_args, const mp_obj_t *args) {
+    buffer_info_t bufinfo;
+    mp_get_buffer_raise(args[0], &bufinfo);
+
+    assert(bufinfo.len >= sizeof(machine_int_t));
+    // TODO: Support long ints
+    // TODO: Support byteorder param
+    // TODO: Support signed param
+    return mp_obj_new_int_from_uint(*(machine_uint_t*)bufinfo.buf);
+}
+
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(int_from_bytes_obj, 1, 3, int_from_bytes);
+
+STATIC mp_obj_t int_to_bytes(uint n_args, const mp_obj_t *args) {
+    machine_int_t val = mp_obj_int_get_checked(args[0]);
+
+    uint len = MP_OBJ_SMALL_INT_VALUE(args[1]);
+    byte *data;
+
+    // TODO: Support long ints
+    // TODO: Support byteorder param
+    // TODO: Support signed param
+    mp_obj_t o = mp_obj_str_builder_start(&mp_type_bytes, len, &data);
+    memset(data, 0, len);
+    memcpy(data, &val, len < sizeof(machine_int_t) ? len : sizeof(machine_int_t));
+    return mp_obj_str_builder_end(o);
+}
+
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(int_to_bytes_obj, 2, 4, int_to_bytes);
+
+STATIC const mp_map_elem_t int_locals_dict_table[] = {
+    { MP_OBJ_NEW_QSTR(MP_QSTR_from_bytes), (mp_obj_t)&int_from_bytes_obj },
+    { MP_OBJ_NEW_QSTR(MP_QSTR_to_bytes), (mp_obj_t)&int_to_bytes_obj },
+};
+
+STATIC MP_DEFINE_CONST_DICT(int_locals_dict, int_locals_dict_table);
+
 const mp_obj_type_t mp_type_int = {
     { &mp_type_type },
     .name = MP_QSTR_int,
@@ -268,4 +305,5 @@
     .make_new = mp_obj_int_make_new,
     .unary_op = mp_obj_int_unary_op,
     .binary_op = mp_obj_int_binary_op,
+    .locals_dict = (mp_obj_t)&int_locals_dict,
 };
