Fixes for large numeric values in base64 and clz64

This commit is contained in:
pancake 2024-02-06 20:22:20 +01:00
parent ce1170c293
commit 1009f69cc2
2 changed files with 6 additions and 6 deletions

View File

@ -21,9 +21,9 @@ R_API void b36_fromnum(char *s, ut64 n) {
static const ut64 pow36[36] = {
1, 36, 1296, 46656, 1679616, 60466176,
2176782336, 78364164096, 2821109907456,
101559956668416, 3656158440062976,
131621703842267136, 4738381338321616896,
2176782336ULL, 78364164096ULL, 2821109907456ULL,
101559956668416ULL, 3656158440062976ULL,
131621703842267136ULL, 4738381338321616896ULL,
9223372036854775808ULL,
};

View File

@ -33,9 +33,9 @@ R_API size_t r_num_bit_clz32(ut32 val) { // CLZ
}
R_API size_t r_num_bit_clz64(ut64 val) { // CLZ
val = val - ((val >> 1) & 0x5555555555555555);
val = (val & 0x3333333333333333) + ((val >> 2) & 0x3333333333333333);
return (((val + (val >> 4)) & 0x0F0F0F0F0F0F0F0F) * 0x0101010101010101) >> 24;
val = val - ((val >> 1) & 0x5555555555555555ULL);
val = (val & 0x3333333333333333ULL) + ((val >> 2) & 0x3333333333333333ULL);
return (((val + (val >> 4)) & 0x0F0F0F0F0F0F0F0FULL) * 0x0101010101010101ULL) >> 24;
}
R_API size_t r_num_bit_count(ut32 val) { // CLZ