sql >> Databáze >  >> NoSQL >> MongoDB

JavaScript - Převést 24místné hexadecimální číslo na desítkové, přidat 1 a pak převést zpět?

Tato verze vrátí řetězec dlouhý jako vstupní řetězec, takže přetečení je ignorováno v případě, že je vstup něco jako "ffffffff".

function hexIncrement(str) {
    var hex = str.match(/[0-9a-f]/gi);
    var digit = hex.length;
    var carry = 1;

    while (digit-- && carry) {
        var dec = parseInt(hex[digit], 16) + carry;
        carry = Math.floor(dec / 16);
        dec %= 16;
        hex[digit] = dec.toString(16);
    }
    return(hex.join(""));
}

document.write(hexIncrement("55a98f19b27585d81922ba0b") + "<BR>");
document.write(hexIncrement("ffffffffffffffffffffffff"));

Tato verze může vrátit řetězec, který je o 1 znak delší než vstupní řetězec, protože vstup jako "ffffffff" se přenese na "100000000".

function hexIncrement(str) {
    var hex = str.match(/[0-9a-f]/gi);
    var digit = hex.length;
    var carry = 1;

    while (digit-- && carry) {
        var dec = parseInt(hex[digit], 16) + carry;
        carry = Math.floor(dec / 16);
        dec %= 16;
        hex[digit] = dec.toString(16);
    }
    if (carry) hex.unshift("1");
    return(hex.join(""));
}

document.write(hexIncrement("55a98f19b27585d81922ba0b") + "<BR>");
document.write(hexIncrement("ffffffffffffffffffffffff"));

Byl jsem zvědavý, zda návrh uživatele 2864740 na práci s 12místnými bloky nabídne nějakou výhodu. K mému překvapení, i když kód vypadá složitější, je ve skutečnosti asi dvakrát rychlejší. Ale první verze běží také 500 000krát za sekundu, takže to není tak, že byste si toho všimli ve skutečném světě.

function hexIncrement(str) {
    var result = "";
    var carry = 1;
    while (str.length && carry) {
        var hex = str.slice(-12);
        if (/^f*$/i.test(hex)) {
            result = hex.replace(/f/gi, "0") + result;
            carry = 1;
        } else {
            result = ("00000000000" + (parseInt(hex, 16) + carry).toString(16)).slice(-hex.length) + result;
            carry = 0;
        }
        str = str.slice(0,-12);
    }
    return(str.toLowerCase() + (carry ? "1" : "") + result);
}

document.write(hexIncrement("55a98f19b27585d81922ba0b") + "<BR>");
document.write(hexIncrement("000000000000ffffffffffff") + "<BR>");
document.write(hexIncrement("0123456789abcdef000000000000ffffffffffff"));


  1. Jak aktualizuji pole dokumentů v mongo db pomocí ovladače java?

  2. ElasticSearch a vyhledávání ve více polích v PHP

  3. prohledávání databáze pomocí mongoose api a nodejs?

  4. MongoDB Nejlepší způsob, jak spárovat a odstranit sekvenční záznamy databáze