|
|
@ -327,20 +327,28 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(int_from_bytes_fun_obj, 2, 3, int_fro |
|
|
|
STATIC MP_DEFINE_CONST_CLASSMETHOD_OBJ(int_from_bytes_obj, (const mp_obj_t)&int_from_bytes_fun_obj); |
|
|
|
|
|
|
|
STATIC mp_obj_t int_to_bytes(mp_uint_t n_args, const mp_obj_t *args) { |
|
|
|
// TODO: Support long ints
|
|
|
|
// TODO: Support byteorder param (assumes 'little')
|
|
|
|
// TODO: Support signed param (assumes signed=False)
|
|
|
|
|
|
|
|
mp_int_t val = mp_obj_int_get_checked(args[0]); |
|
|
|
mp_int_t len = MP_OBJ_SMALL_INT_VALUE(args[1]); |
|
|
|
|
|
|
|
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); |
|
|
|
|
|
|
|
if (MP_ENDIANNESS_LITTLE) { |
|
|
|
memcpy(data, &val, len < sizeof(mp_int_t) ? len : sizeof(mp_int_t)); |
|
|
|
return mp_obj_str_builder_end(o); |
|
|
|
} else { |
|
|
|
while (len--) { |
|
|
|
*data++ = val; |
|
|
|
val >>= 8; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
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[] = { |
|
|
|