JavaScript 進位制轉換 All In One

xgqfrms發表於2024-05-28

JavaScript 進位制轉換 All In One

js base conversion

image

十進位制二進位制

Number.prototype.toString()進位制數子轉換為 進位制、進位制、十六進制 等進位制的字串

(5).toString(2);
// '101'

let tTob = (5).toString(2);
console.log(tTob, typeof tTob);
// 101 string

(5).toString(2);
// '101'
(5.5).toString(2);
// '101.1'
(5.6).toString(2);
// '101.1001100110011001100110011001100110011001100110011'

radix 基數

radix Optional
An integer in the range 2 through 36 specifying the base to use for representing the number value.
Defaults to 10.

toString()
toString(radix)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toString

二進位制十進位制

parseInt('101', 2);
// 5

let bTot = parseInt('101', 2);
console.log(bTot, typeof bTot);
// 5 'number'

radix 基數

radix Optional
An integer between 2 and 36 that represents the radix (the base in mathematical numeral systems) of the string.
It is converted to a 32-bit integer;
if it's nonzero and outside the range of [2, 36] after conversion, the function will always return NaN.
If 0 or not provided, the radix will be inferred based on string's value.
Be careful — this does not always default to 10!
The description below explains in more detail what happens when radix is not provided.

parseInt(string)
parseInt(string, radix)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

demos


function countBits(n: number): number[] {
  let temp = [];
  for(let i = 0; i <= n; i ++) {
    // js 二進位制 轉換
    let b = [...tTob(i)].filter(i => i === `1`).length;
    temp.push(b); 
  }
  return temp;
};

function tTob (t: number): string {
  return t.toString(2);
}


https://leetcode.com/problems/counting-bits/description/?envType=study-plan-v2&envId=leetcode-75


// function tTob (t: number): string {
//   let i = 0;
//   let str = 0;
//   if(t % 2 !== 0) {
//     str += 1;
//   } else {
//     str += 0;
//   }
//   while(2**i < t) {
//     i += 1;
//     str += 10**i;
//     // if(i % 2 !== 0) {
//     //   str += 10**i;
//     // }
//   }
//   // while(t / 2) {
//   //   t = Math.floor(t / 2);
//   //   i += 1;
//   //   str += 10**i;
//   // }
//   console.log(`str =`, str);
//   return `${str}`;
// }

// function tTob (t: number): string {
//   let n = 0;
//   while(2**n < t) {
//     n += 1;
//   }
//   console.log(`n =`, n);
//   let str = 0;
//   if(t % 2 !== 0) {
//     str += 1;
//   } else {
//     str += 0;
//   }
//   let sum = str;
//   for(let i = 1; i <= n; i++) {
//     if(sum + 2**i < t) {
//       str += 10**i;
//       sum += 2**i;
//     }
//   }
//   console.log(`str =`, str);
//   return `${str}`;
// }


// function tTob (t: number): str {
//   let str = ``;
//   let n = 0;
//   while(2**n < t) {
//     n += 1;
//   }
//   console.log(`n =`, n);
//   let sum = 0;
//   for(let i = 0; i < n; i++) {
//     sum += 2**i;
//     if(sum < t) {
//       str += i 
//     }
//   }
//   return str;
//   // return parseInt(str, 10);
//   // return parseInt(t, 2);
// }


(🐞 反爬蟲測試!打擊盜版⚠️)如果你看到這個資訊, 說明這是一篇剽竊的文章,請訪問 https://www.cnblogs.com/xgqfrms/ 檢視原創文章!

refs



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 釋出文章使用:只允許註冊使用者才可以訪問!

原創文章,版權所有©️xgqfrms, 禁止轉載 🈲️,侵權必究⚠️!


相關文章