@@ -432,15 +432,11 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(int_from_bytes_fun_obj, 3, 4, int_fro
432432STATIC MP_DEFINE_CONST_CLASSMETHOD_OBJ (int_from_bytes_obj , MP_ROM_PTR (& int_from_bytes_fun_obj ));
433433
434434STATIC mp_obj_t int_to_bytes (size_t n_args , const mp_obj_t * args ) {
435- // TODO: Support byteorder param
436435 // TODO: Support signed param (assumes signed=False)
437436 (void )n_args ;
438437
439- if (args [2 ] != MP_OBJ_NEW_QSTR (MP_QSTR_little )) {
440- mp_not_implemented ("" );
441- }
442-
443438 mp_uint_t len = MP_OBJ_SMALL_INT_VALUE (args [1 ]);
439+ bool big_endian = args [2 ] != MP_OBJ_NEW_QSTR (MP_QSTR_little );
444440
445441 vstr_t vstr ;
446442 vstr_init_len (& vstr , len );
@@ -449,12 +445,13 @@ STATIC mp_obj_t int_to_bytes(size_t n_args, const mp_obj_t *args) {
449445
450446 #if MICROPY_LONGINT_IMPL != MICROPY_LONGINT_IMPL_NONE
451447 if (!MP_OBJ_IS_SMALL_INT (args [0 ])) {
452- mp_obj_int_to_bytes_impl (args [0 ], false , len , data );
448+ mp_obj_int_to_bytes_impl (args [0 ], big_endian , len , data );
453449 } else
454450 #endif
455451 {
456452 mp_int_t val = MP_OBJ_SMALL_INT_VALUE (args [0 ]);
457- mp_binary_set_int (MIN ((size_t )len , sizeof (val )), false, data , val );
453+ size_t l = MIN ((size_t )len , sizeof (val ));
454+ mp_binary_set_int (l , big_endian , data + (big_endian ? (len - l ) : 0 ), val );
458455 }
459456
460457 return mp_obj_new_str_from_vstr (& mp_type_bytes , & vstr );
0 commit comments