Convert to binary

Attempts to convert any numbers on all webpages to base 2. Based on the video https://youtu.be/rDDaEVcwIJM

Versión del día 07/02/2024. Echa un vistazo a la versión más reciente.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         Convert to binary
// @version      2024-02-07
// @description  Attempts to convert any numbers on all webpages to base 2. Based on the video https://youtu.be/rDDaEVcwIJM
// @author       Nick M
// @match      *://*/*
// @run-at       document-idle
// @namespace    https://youtu.be/rDDaEVcwIJM
// @license MIT
// ==/UserScript==

(function() {
    'use strict';
    function toNewBase(n){
        let baseChars = ["ı","l"];
        let newStr = "";
        if (n==0) return baseChars[0];
        while (n > 0){
            let remainder = n%baseChars.length;
            newStr = baseChars[remainder]+newStr
            n = (n-remainder)/baseChars.length;
        }
        return newStr;
    }
    function replaceNumbers(text){
        var pattern1 = /\b\d+(\d+,)*\.?(\d+,)*(k|m|b)?\b/gi;
        var pattern2 = /\b\d+(\d+,)*\.?(\d+,)*(k|m|b)?\b/i;
        let result = [...text.matchAll(pattern1)];
        let newText = text
        for (var i=0; i<result.length; i++){
            newText = newText.replace(pattern2,"`,`,`");
        }
        var pattern3 = /`,`,`/;
        var groupings = 4
        for (var n=0; n<result.length; n++){
            var curNum = result[n][0].replaceAll(",","");
            console.log(curNum)
            var newStr1;
            if (curNum == "00"){
                newStr1 = toNewBase(0)+toNewBase(0)
            } else {
                if (curNum[curNum.length-1].toUpperCase() == "K") curNum = Number(curNum.substr(0,curNum.length-1))*1000;
                else if (curNum[curNum.length-1].toUpperCase() == "M") curNum = Number(curNum.substr(0,curNum.length-1))*1000000;
                else if (curNum[curNum.length-1].toUpperCase() == "B") curNum = Number(curNum.substr(0,curNum.length-1))*1000000000;
                else curNum = Number(curNum);
                newStr1 = toNewBase(curNum);
            }
            var newStr2 = "";
            for (var e = newStr1.length-groupings; e > -groupings; e -= groupings){
                if (e>=0){
                    newStr2 = "<u style=\"padding-left:1px\">"+newStr1.substr(e,groupings)+"</u>"+newStr2
                } else {
                    newStr2 = "<u style=\"padding-left:1px\">"+newStr1.substr(0,newStr1.length%groupings)+"</u>"+newStr2
                }
            }
            newText = newText.replace(pattern3,newStr2);
        }
        return newText;
    }
    function replaceInners(currentNode){
        if (!currentNode) currentNode = document.getElementsByTagName("body")[0];
        if (currentNode.nodeName == "SCRIPT") return;
        if (currentNode.nodeName == "STYLE") return;
        if (currentNode.nodeName == "NOSCRIPT") return;
        //console.log(currentNode.nodeName)
        if (currentNode.childNodes.length > 0){
            var nodelist = []
            for (var i = 0; i<currentNode.childNodes.length; i++){
                nodelist.push(currentNode.childNodes[i])
            }
            for (var n = 0; n<nodelist.length; n++){
                //console.log("childnode:"+nodelist[n].nodeName)
                if (nodelist[n].nodeName == "#text"){
                    var newText = replaceNumbers(nodelist[n].textContent)
                    if (newText != nodelist[n].textContent){
                        var replacementNode = document.createElement('span');
                        replacementNode.innerHTML = newText
                        currentNode.insertBefore(replacementNode, nodelist[n]);
                        currentNode.removeChild(nodelist[n]);
                    }
                } else {
                    replaceInners(nodelist[n])
                }
            }
        }
    }
    replaceInners()
    setTimeout(replaceInners,2000);
    setTimeout(replaceInners,4000);
    setTimeout(replaceInners,8000);
    setTimeout(replaceInners,16000);
})();