Skip to content

Commit ea6a958

Browse files
committed
py/objint: Simplify mp_int_format_size and remove unreachable code.
One never needs to format integers with a base larger than 16 (but code can be easily extended beyond this value if needed in the future).
1 parent 44bf8e1 commit ea6a958

1 file changed

Lines changed: 4 additions & 6 deletions

File tree

py/objint.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,23 +151,21 @@ typedef mp_int_t fmt_int_t;
151151
#endif
152152

153153
STATIC const uint8_t log_base2_floor[] = {
154-
0,
155154
0, 1, 1, 2,
156155
2, 2, 2, 3,
157156
3, 3, 3, 3,
158157
3, 3, 3, 4,
158+
/* if needed, these are the values for higher bases
159159
4, 4, 4, 4,
160160
4, 4, 4, 4,
161161
4, 4, 4, 4,
162162
4, 4, 4, 5
163+
*/
163164
};
164165

165166
size_t mp_int_format_size(size_t num_bits, int base, const char *prefix, char comma) {
166-
if (base < 2 || base > 32) {
167-
return 0;
168-
}
169-
170-
size_t num_digits = num_bits / log_base2_floor[base] + 1;
167+
assert(2 <= base && base <= 16);
168+
size_t num_digits = num_bits / log_base2_floor[base - 1] + 1;
171169
size_t num_commas = comma ? num_digits / 3 : 0;
172170
size_t prefix_len = prefix ? strlen(prefix) : 0;
173171
return num_digits + num_commas + prefix_len + 2; // +1 for sign, +1 for null byte

0 commit comments

Comments
 (0)