代码之家  ›  专栏  ›  技术社区  ›  user461112

基极转换

  •  0
  • user461112  · 技术社区  · 14 年前

    2 回复  |  直到 14 年前
        1
  •  0
  •   Sheldon L. Cooper    14 年前

    此函数读取八进制字符串并返回其数值。

    int parse_octal(const char* s) {
      int r = 0;
      for ( ; *s; s++)
        r = (r << 3) | (*s & 7);
      return r;
    }
    

    它使用位掩码来提取ASCII值的相关位。

        2
  •  1
  •   Fuzz    14 年前

    这将有助于了解为什么要通过位掩蔽来实现这一点,因为有时有更好的方法来全局解决问题,而不是这个小小的请求。

    我设法找到了 this site 多亏了谷歌

    void convertBase(int decimal) //Function that convert decimal to base of 8
    {
      const int mask1 = (7 << 3);
      const int mask2 = (7 << 0);
      firstDigit = (decimal & mask1) + '0';
      secondDigit = (decimal & mask2) + '0';
      printf("Octal Representation of Binary Number: %d%d\n", firstDigit, secondDigit);
    }