十进制转与26进制的相互转换

十进制转与26进制的相互转换

/**
 * 将十进制转换为26进制
 * @param {Number} num 十进制数
 * @param {Bolean} isUpper 是否输出为大写, 默认为小写
 */
export function convertToTwoteenSix(num, isUpper = true) {
  let str = '';
  let merchant = null;
  const temp = num % 26;
  str += isUpper ? String.fromCharCode(temp + 97).toUpperCase() : String.fromCharCode(temp + 97);
  merchant = parseInt(num / 26);
  if (merchant) {
    str += convertToTwoteenSix(merchant - 1, isUpper);
  }
  // 从后往前存储,进行反转
  return str.split('').reverse().join('');
}
console.log(convertToTwoteenSix(0)) // A
console.log(convertToTwoteenSix(26), fasle) // aa
/**
 * 将26进制转换十进制
 * @param {Number} str 26进制数
 */
export function convertToTen(str) {
  const strToLower = (arg) => { // 字符串转小写
    const str = arg.split('');
    for (let i = 0; i < str.length; i++) {
      if (!(str[i].charAt() >= "a" && str[i].charAt() <= "z")) {
        str[i] = str[i].toLowerCase();
      }
    }
    return str.join('');
  };
  const lowerStr = strToLower(str);
  let num = 0;
  let index = 1;
  for (let i = lowerStr.length - 1; i >= 0; i--) {
    const val = (i !== lowerStr.length - 1) ? ((lowerStr.charCodeAt(i) - 97) % 26) + 1 : (lowerStr.charCodeAt(i) - 97) % 26; // 因为乘法, 所以A是0, 需要加1相乘
    num += val * index;
    index = index * 26;
  }
  return num;
}
console.log(convertToTen('Ab'), convertToTen('AB')) // 27,27
console.log(convertToTen('z') // 25
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值