JavaScript進(jìn)制數(shù)之間的互相轉(zhuǎn)換
前言:
進(jìn)制轉(zhuǎn)換是人們利用符號(hào)來計(jì)數(shù)的方法。進(jìn)制轉(zhuǎn)換由一組數(shù)碼符號(hào)和兩個(gè)基本因素“基數(shù)”與“位權(quán)”構(gòu)成?;鶖?shù)是指,進(jìn)位計(jì)數(shù)制中所采用的數(shù)碼(數(shù)制中用來表示“量”的符號(hào))的個(gè)數(shù)。位權(quán)是指,進(jìn)位制中每一固定位置對(duì)應(yīng)的單位值。
一、十進(jìn)制的數(shù)化為k進(jìn)制的數(shù)
/** * 十進(jìn)制的數(shù)化為k進(jìn)制的數(shù)【返回?cái)?shù)組的index=0位置是最高位】(取k取余法) * @num 10進(jìn)制數(shù) * @k k * @returns k進(jìn)制數(shù)序列 */ function ckqy(num,k) { let y = []; while (num > 0) { let s = Math.floor(num / k); let _y = num % k; //console.log(num + " ÷ " + k + " = " + s + " ··· " + _y); if (s == 0) { y.push(num); num = 0; } else { y.push(_y); num = s; } } return y.reverse(); }
二、k進(jìn)制的數(shù)化為十進(jìn)制的數(shù)
/** * k進(jìn)制的數(shù)化為十進(jìn)制的數(shù)(乘冪相加法) * @kArray k進(jìn)制數(shù)序列 * @k k * @returns 十進(jìn)制的數(shù) */ function kTo10(kArray,k){ let v10=0; let kArrayLen=kArray.length; for(let ind=0; ind<kArrayLen; ind++){ v10 += kArray[ind] * Math.pow(k,kArrayLen - 1 - ind); } return v10; }
三、例題
最近在刷面試題的時(shí)候看到一道進(jìn)制轉(zhuǎn)換題,
寫完才發(fā)現(xiàn)可以用js的方法直接轉(zhuǎn)換,這是自己總結(jié)的一些方法
1.其它進(jìn)制轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)
//可以直接用parseInt let num = parseInt(n1,n2); //n1:是需要轉(zhuǎn)換為10進(jìn)制的數(shù) //n2:是被轉(zhuǎn)換數(shù)據(jù)的進(jìn)制值,如2,8,16等。
例如將十六進(jìn)制的‘AA’轉(zhuǎn)為十進(jìn)制數(shù)據(jù):
//十六進(jìn)制的數(shù):AA ?=> ?十進(jìn)制的數(shù):170 let num = parseInt('AA',16); ? ?//AA和0xAA都可,此時(shí)num = 170
2.十進(jìn)制數(shù)據(jù)轉(zhuǎn)換為其它進(jìn)制
例如將十進(jìn)制的170轉(zhuǎn)為十六進(jìn)制的數(shù)據(jù)
//十進(jìn)制的數(shù):170 ? => ? ?十六進(jìn)制的數(shù):AA ? let num1=parseInt("170");//如果這個(gè)數(shù)是字符串格式的,需要執(zhí)行這一步 console.log(num1); ? // ?170 //toString里的參數(shù)可以是2,8,16等.設(shè)置轉(zhuǎn)換10進(jìn)制數(shù)據(jù)到對(duì)應(yīng)進(jìn)制格式,本例是將num轉(zhuǎn)成16進(jìn)制數(shù)據(jù) let num2=num1.toString(16); console.log(num2); ? //aa
3.其它進(jìn)制之間的相互轉(zhuǎn)換
例如將十六進(jìn)制的’AA‘轉(zhuǎn)為二進(jìn)制的數(shù)據(jù)
- 首先將十六進(jìn)制轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)
- 然后再將所得的十進(jìn)制數(shù)據(jù)轉(zhuǎn)為二進(jìn)制數(shù)據(jù)
小結(jié):進(jìn)制之間的轉(zhuǎn)換都是先將其他進(jìn)制數(shù)據(jù)轉(zhuǎn)為十進(jìn)制,再用轉(zhuǎn)好的十進(jìn)制數(shù)據(jù)轉(zhuǎn)為其他進(jìn)制數(shù)據(jù)
//首先將十六進(jìn)制的數(shù):AA ?=> ?十進(jìn)制的數(shù):170 let num1 = parseInt('AA',16); ? ?//AA和0xAA都可 console.log(num1); ?// 170 let num2 = num1.toString(2); console.log(num2); ? //10101010
到此這篇關(guān)于JavaScript進(jìn)制數(shù)之間的互相轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)JavaScript進(jìn)制轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Javascript this 的一些學(xué)習(xí)總結(jié)
相信有C++、C#或Java等編程經(jīng)驗(yàn)的各位,對(duì)于this關(guān)鍵字再熟悉不過了。由于Javascript是一種面向?qū)ο蟮木幊陶Z言,它和C++、C#或Java一樣都包含this關(guān)鍵字,接下來我們將向大家介紹Javascript中的this關(guān)鍵字2012-08-08JavaScript實(shí)戰(zhàn)(原生range和自定義特效)簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄狫avaScript實(shí)戰(zhàn)(原生range和自定義特效)簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08微信小程序?qū)崿F(xiàn)客服功能(客服消息)的全過程
在最近做的微信小程序中需要實(shí)現(xiàn)一個(gè)自帶的客服功能,下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)客服功能(客服消息)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12Javascript模擬加速運(yùn)動(dòng)與減速運(yùn)動(dòng)代碼分享
這篇文章主要介紹了Javascript加速運(yùn)動(dòng)與減速運(yùn)動(dòng)代碼分享,需要的朋友可以參考下2014-12-12electron中獲取mac地址的實(shí)現(xiàn)示例
在基于Electron的應(yīng)用中,有一個(gè)業(yè)務(wù)需求是獲取物理網(wǎng)卡的Mac地址以用于客戶機(jī)唯一性識(shí)別,本文主要介紹了electron中獲取mac地址的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12javascript執(zhí)行環(huán)境及作用域詳解
這篇文章主要為大家詳細(xì)介紹了javascript執(zhí)行環(huán)境及作用域,分別針對(duì)javascript執(zhí)行環(huán)境及作用域進(jìn)行探討,感興趣的小伙伴們可以參考一下2016-05-05談?wù)刯s中的prototype及prototype屬性解釋和常用方法
prototype是javascript中筆記難理解的一部分內(nèi)容,下面通過幾個(gè)關(guān)鍵知識(shí)點(diǎn)給大家講解js中的prototype,對(duì)js中的prototype相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-11-11頁面圖片浮動(dòng)左右滑動(dòng)效果的簡(jiǎn)單實(shí)現(xiàn)案例
本篇文章主要是對(duì)頁面圖片浮動(dòng)左右滑動(dòng)效果的簡(jiǎn)單實(shí)現(xiàn)案例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02