C中的二进制转换(到12个字符,基部36,剩余零填充)



将二进制二进制的最有效的功能转换为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,那么您可以使用位移位及以获取索引,现在您必须使用划分并处理其余的

最新更新