c中的二进制转换(到12个字符,基数为36,左边为零填充)

时间:2014-01-24 01:40:54

标签: c

将二进制转换为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)明智

1 个答案:

答案 0 :(得分:1)

好吧,表查找是我认为最快的方法。这个问题是基础的,因为它不是“比特对齐”。如果你的基数是2 ^ n,那么你可以使用按位移位和AND来获得指数,现在你必须使用除法并处理余数