国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用javascript自己寫一個(gè)進(jìn)制轉(zhuǎn)換小工具

fobnn / 3193人閱讀

摘要:進(jìn)制轉(zhuǎn)換本身自帶進(jìn)制轉(zhuǎn)換功能,支持進(jìn)制的轉(zhuǎn)換注意,不能直接使用因?yàn)閿?shù)字后面小數(shù)點(diǎn)后面會(huì)被識(shí)別成小數(shù)點(diǎn)的點(diǎn)將十進(jìn)制的轉(zhuǎn)換成進(jìn)制,結(jié)果是將進(jìn)制的轉(zhuǎn)換成進(jìn)制,結(jié)果是將十進(jìn)制的轉(zhuǎn)換成進(jìn)制,結(jié)果是將進(jìn)制的轉(zhuǎn)換成進(jìn)制,結(jié)果是將十進(jìn)制的轉(zhuǎn)換成進(jìn)制,結(jié)果

JavaScript進(jìn)制轉(zhuǎn)換 JavaScript本身自帶進(jìn)制轉(zhuǎn)換功能,支持2-36進(jìn)制的轉(zhuǎn)換

// 注意,不能直接使用 11.toString(16); 因?yàn)閿?shù)字后面小數(shù)點(diǎn)后面會(huì)被識(shí)別成小數(shù)點(diǎn)的點(diǎn)
Number(11).toString(16); // 將十進(jìn)制的11轉(zhuǎn)換成16進(jìn)制,結(jié)果是b
parseInt("b", 16); // 將16進(jìn)制的b轉(zhuǎn)換成10進(jìn)制,結(jié)果是11

Number(38).toString(36); // 將十進(jìn)制的38轉(zhuǎn)換成36進(jìn)制,結(jié)果是12
parseInt(12, 36); // 將36進(jìn)制的12轉(zhuǎn)換成10進(jìn)制,結(jié)果是38

Number(27).toString(2); // 將十進(jìn)制的27轉(zhuǎn)換成2進(jìn)制,結(jié)果是11011
parseInt("11011", 2); 、// 將二進(jìn)制的11011轉(zhuǎn)換成10進(jìn)制,結(jié)果是27

但是如果要寫超過(guò)36進(jìn)制的進(jìn)制轉(zhuǎn)換,js就不支持了 自己寫了一個(gè)進(jìn)制轉(zhuǎn)換工具,可自定義字符對(duì)應(yīng)關(guān)系
/**
 * 十進(jìn)制和其他進(jìn)制的相互轉(zhuǎn)換
 */
class MyNumberConvertion {
    constructor(chars) {
        this.chars = chars;
        this.RADIX = chars.length;
        this.map = new Map();
        for (let i = 0; i < this.RADIX; i++) {
            let c = chars[i];
            this.map.set(c, i);
        }
    }

    /**
     * 將十進(jìn)制數(shù)字轉(zhuǎn)換成指定進(jìn)制
     * @param {Number, String} num 
     */
    transfer(num) {
        let a = +num; //把字符串變成數(shù)字
        let arr = [];
        if (a === 0) {
            arr.push("0");
        }
        const RADIX = this.RADIX;
        while (a > 0) {
            let tmp = a % RADIX;
            let c = this.chars[tmp];
            arr.unshift(c);
            a = parseInt(a / RADIX);
        }
        return arr.join("");
    }

    /**
     * 將字符串還原成指定進(jìn)制
     * @param {String} str 
     */
    revert(str) {
        str = str + "";
        str = str.trim();
        let num = 0;
        let len = str.length;
        let RADIX = this.RADIX;
        for (let i = 0; i < len; i++) {
            let s = str[i];
            let a = this.map.get(str[i]);
            num += a * Math.pow(RADIX, len - i - 1);
        }
        return num;
    }
}

示例如下:

console.log("64進(jìn)制");
// //初始化的字符串,字符串長(zhǎng)度就是進(jìn)制,從左到右,0對(duì)應(yīng)數(shù)值0,最后一個(gè)字符~對(duì)應(yīng)數(shù)值63
const chars64 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~";
// //初始化轉(zhuǎn)換器
const convertion64 = new MyNumberConvertion(chars64);
let str64 = "445306828";
let num64 = convertion64.transfer(str64);//將數(shù)字轉(zhuǎn)換成64進(jìn)制
let source64 = convertion64.revert(num64);//將64進(jìn)制字符還原成原始數(shù)據(jù)
console.log(`原始數(shù)據(jù):${str64}`);
console.log(`轉(zhuǎn)換后:${num64}`)
console.log(`還原后:${source64}`);

console.log("2進(jìn)制");
const convertion2 = new MyNumberConvertion("01");
let str2 = 15;
let num2 = convertion2.transfer(str2);
let source2 = convertion2.revert(num2);
console.log(`原始數(shù)據(jù):${str2}`);
console.log(`轉(zhuǎn)換后:${num2}`)
console.log(`還原后:${source2}`);

console.log("8進(jìn)制");
const convertion8 = new MyNumberConvertion("01234567");
let str8 = 39;
let num8 = convertion8.transfer(str8);
let source8 = convertion8.revert(num8);
console.log(`原始數(shù)據(jù):${str8}`);
console.log(`轉(zhuǎn)換后:${num8}`)
console.log(`還原后:${source8}`);

進(jìn)制轉(zhuǎn)換小工具

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/104689.html

相關(guān)文章

  • 爬蟲不得不學(xué)之 JavaScript 入門篇

    摘要:為數(shù)值固定的表示法,用來(lái)表示整數(shù)和浮點(diǎn)數(shù)的。無(wú)論你寫何種進(jìn)制,它的存儲(chǔ)還是以二進(jìn)制來(lái)存儲(chǔ)的,所以這樣就弄成了浮點(diǎn)數(shù)的存儲(chǔ)精確度,浮點(diǎn)數(shù)只能精確到位小數(shù)。關(guān)系運(yùn)算符關(guān)系運(yùn)算符有和。賦值運(yùn)算符賦值運(yùn)算符有六個(gè)。 現(xiàn)在的爬蟲越來(lái)越難了,不再和之前的那樣,隨便抓個(gè)包就可以找到相關(guān)的 url ,然后 post 一下或者 get 一下數(shù)據(jù)就出來(lái)了。還有一個(gè)可能就是可能你以前用來(lái)學(xué)習(xí)的爬蟲網(wǎng)站太簡(jiǎn)單...

    tracymac7 評(píng)論0 收藏0
  • 「干貨」細(xì)說(shuō) Javascript 中的浮點(diǎn)數(shù)精度丟失問(wèn)題(內(nèi)附好課推薦)

    摘要:前言最近,朋友問(wèn)了我這樣一個(gè)問(wèn)題在中的運(yùn)算結(jié)果,為什么是這樣的雖然我告訴他說(shuō),這是由于浮點(diǎn)數(shù)精度問(wèn)題導(dǎo)致的。由于可以用階碼移動(dòng)小數(shù)點(diǎn),因此稱為浮點(diǎn)數(shù)。它的實(shí)現(xiàn)遵循標(biāo)準(zhǔn),使用位精度來(lái)表示浮點(diǎn)數(shù)。 showImg(https://segmentfault.com/img/remote/1460000018981071); 前言 最近,朋友 L 問(wèn)了我這樣一個(gè)問(wèn)題:在 chrome 中的運(yùn)算...

    senntyou 評(píng)論0 收藏0
  • 你不知道的JavaScript中卷 第一、二章

    摘要:表達(dá)式?jīng)]有返回值,因此返回結(jié)果是。并不改變表達(dá)式的結(jié)果,只要讓表達(dá)式不返回值按慣例我們用來(lái)獲得這主要源自語(yǔ)言,當(dāng)然使用或其他表達(dá)式也是可以的。不是數(shù)字的數(shù)字如果數(shù)學(xué)運(yùn)算的操作數(shù)不是數(shù)字類型,就無(wú)法返回一個(gè)有效的數(shù)字,這種情況下返回值為。 這里的內(nèi)容是讀書筆記,僅供自己學(xué)習(xí)所用,有欠缺的地方歡迎留言提示。 第一部分 類型和語(yǔ)法 第1章 類型ECMAScript語(yǔ)言類型包括Undefin...

    levy9527 評(píng)論0 收藏0
  • JavaScript值介紹

    摘要:的數(shù)字類型是基于標(biāo)準(zhǔn)實(shí)現(xiàn)的,該標(biāo)準(zhǔn)也被稱為浮點(diǎn)數(shù)使用的是雙精度即位進(jìn)制由于數(shù)字值可以使用對(duì)象進(jìn)行封裝,因此數(shù)字值可以調(diào)用中的方法。 數(shù)組 和其他語(yǔ)言不同,在JavaScript中,數(shù)組可以擁有不同值類型,可以使字符串,數(shù)字,對(duì)象,還可以是數(shù)組(多維數(shù)組就是這樣形成的). 聲明數(shù)組后,可以直接通過(guò)索引的方式進(jìn)行賦值: var arr = []; arr.length; //0 ...

    hsluoyz 評(píng)論0 收藏0
  • 高質(zhì)量JavaScript代碼的基本技巧

    摘要:五不要增加內(nèi)置的原型增加內(nèi)置構(gòu)造函數(shù)如,和等的原型屬性是一個(gè)增強(qiáng)功能性的強(qiáng)大的方法,但這可能會(huì)嚴(yán)重影響可維護(hù)性,因?yàn)檫@種做法將使代碼變得更加不可預(yù)測(cè)。推薦使用后者,這樣根據(jù)名字就能明顯地區(qū)分出變量函數(shù)和基本常量等。 一、盡量少用全局變量 減少全局名字空間污染,最理想的情況是一個(gè)應(yīng)用程序僅有一個(gè)全局變量。 二、單一var模式 var a = 1, b = 2, sum =...

    Alex 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<