成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用javascript自己寫一個進制轉換小工具

fobnn / 3201人閱讀

摘要:進制轉換本身自帶進制轉換功能,支持進制的轉換注意,不能直接使用因為數字后面小數點后面會被識別成小數點的點將十進制的轉換成進制,結果是將進制的轉換成進制,結果是將十進制的轉換成進制,結果是將進制的轉換成進制,結果是將十進制的轉換成進制,結果

JavaScript進制轉換 JavaScript本身自帶進制轉換功能,支持2-36進制的轉換

// 注意,不能直接使用 11.toString(16); 因為數字后面小數點后面會被識別成小數點的點
Number(11).toString(16); // 將十進制的11轉換成16進制,結果是b
parseInt("b", 16); // 將16進制的b轉換成10進制,結果是11

Number(38).toString(36); // 將十進制的38轉換成36進制,結果是12
parseInt(12, 36); // 將36進制的12轉換成10進制,結果是38

Number(27).toString(2); // 將十進制的27轉換成2進制,結果是11011
parseInt("11011", 2); 、// 將二進制的11011轉換成10進制,結果是27

但是如果要寫超過36進制的進制轉換,js就不支持了 自己寫了一個進制轉換工具,可自定義字符對應關系
/**
 * 十進制和其他進制的相互轉換
 */
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);
        }
    }

    /**
     * 將十進制數字轉換成指定進制
     * @param {Number, String} num 
     */
    transfer(num) {
        let a = +num; //把字符串變成數字
        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("");
    }

    /**
     * 將字符串還原成指定進制
     * @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進制");
// //初始化的字符串,字符串長度就是進制,從左到右,0對應數值0,最后一個字符~對應數值63
const chars64 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-~";
// //初始化轉換器
const convertion64 = new MyNumberConvertion(chars64);
let str64 = "445306828";
let num64 = convertion64.transfer(str64);//將數字轉換成64進制
let source64 = convertion64.revert(num64);//將64進制字符還原成原始數據
console.log(`原始數據:${str64}`);
console.log(`轉換后:${num64}`)
console.log(`還原后:${source64}`);

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

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

進制轉換小工具

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

轉載請注明本文地址:http://systransis.cn/yun/104689.html

相關文章

  • 爬蟲不得不學之 JavaScript 入門篇

    摘要:為數值固定的表示法,用來表示整數和浮點數的。無論你寫何種進制,它的存儲還是以二進制來存儲的,所以這樣就弄成了浮點數的存儲精確度,浮點數只能精確到位小數。關系運算符關系運算符有和。賦值運算符賦值運算符有六個。 現在的爬蟲越來越難了,不再和之前的那樣,隨便抓個包就可以找到相關的 url ,然后 post 一下或者 get 一下數據就出來了。還有一個可能就是可能你以前用來學習的爬蟲網站太簡單...

    tracymac7 評論0 收藏0
  • 「干貨」細說 Javascript 中的浮點數精度丟失問題(內附好課推薦)

    摘要:前言最近,朋友問了我這樣一個問題在中的運算結果,為什么是這樣的雖然我告訴他說,這是由于浮點數精度問題導致的。由于可以用階碼移動小數點,因此稱為浮點數。它的實現遵循標準,使用位精度來表示浮點數。 showImg(https://segmentfault.com/img/remote/1460000018981071); 前言 最近,朋友 L 問了我這樣一個問題:在 chrome 中的運算...

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

    摘要:表達式沒有返回值,因此返回結果是。并不改變表達式的結果,只要讓表達式不返回值按慣例我們用來獲得這主要源自語言,當然使用或其他表達式也是可以的。不是數字的數字如果數學運算的操作數不是數字類型,就無法返回一個有效的數字,這種情況下返回值為。 這里的內容是讀書筆記,僅供自己學習所用,有欠缺的地方歡迎留言提示。 第一部分 類型和語法 第1章 類型ECMAScript語言類型包括Undefin...

    levy9527 評論0 收藏0
  • JavaScript值介紹

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

    hsluoyz 評論0 收藏0
  • 高質量JavaScript代碼的基本技巧

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

    Alex 評論0 收藏0

發(fā)表評論

0條評論

fobnn

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<