MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

JavaScript - Konwertuj 24-cyfrową liczbę szesnastkową na dziesiętną, dodaj 1, a następnie przekonwertuj z powrotem?

Ta wersja zwróci ciąg tak długi, jak ciąg wejściowy, więc przepełnienie jest ignorowane w przypadku, gdy dane wejściowe są czymś w rodzaju "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"));

Ta wersja może zwrócić ciąg znaków dłuższy o 1 znak niż ciąg wejściowy, ponieważ dane wejściowe, takie jak „ffffffff”, są przenoszone do postaci „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"));

Byłem ciekawy, czy sugestia użytkownika 2864740 dotycząca pracy z 12-cyfrowymi fragmentami przyniesie jakąkolwiek korzyść. Ku mojemu zdziwieniu, mimo że kod wygląda na bardziej skomplikowany, w rzeczywistości jest około dwa razy szybszy. Ale pierwsza wersja również działa 500 000 razy na sekundę, więc nie zauważysz tego w prawdziwym świecie.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $funkcja tygodnia i pierwszy dzień tygodnia w agregacji

  2. Mongo Group i suma z dwoma polami

  3. Utwórz połączenie mongo i ożyw je do wykonania całego zestawu testowego w Ready!API

  4. Transakcja MongoDB

  5. Mangusta nie zapisuje danych