将二进制二进制的最有效的功能转换为12个字符的基础36,剩下的零填充是什么?目前,我提出了这一点:
int transform_id (int64_t id_value, char* str) {
char num[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ??";
int i;
for (i = 11; i >= 0; id_value /= 36) {
str [i--] = num [id_value % 36];
}
str [12] = 0;
return (12);
}
...似乎有效,但我不确定是否有一个优越的方法o(n)明智
好吧,表格查找是我认为最快的方法。这个问题是基本的,因为它不是"比特一致"。如果您的基数为2^n,那么您可以使用位移位及以获取索引,现在您必须使用划分并处理其余的