sql >> Database teknologi >  >> NoSQL >> MongoDB

JavaScript - Konverter 24-cifret hexadecimalt tal til decimaltal, tilføj 1 og konverter derefter tilbage?

Denne version returnerer en streng lige så lang som inputstrengen, så overløbet ignoreres, hvis inputtet er noget i stil med "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"));

Denne version kan returnere en streng, der er 1 tegn længere end inputstrengen, fordi input som "ffffffff" overføres til at blive "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"));

Jeg var nysgerrig efter at se, om user2864740's forslag om at arbejde med 12-cifrede bidder ville give nogen fordel. Til min overraskelse, selvom koden ser mere kompliceret ud, er den faktisk omkring dobbelt så hurtig. Men den første version kører også 500.000 gange i sekundet, så det er ikke sådan, du kommer til at lægge mærke til det i den virkelige verden.

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. MongoDb streamer indsatte data ud i realtid (eller næsten realtid)

  2. installer mongoDB (underordnet proces mislykkedes, afsluttet med fejlnummer 100)

  3. Hent underdokumenter, der matcher den maksimale værdi i arrayet

  4. Oprettelse af MongoDB unikke nøgle med C#