MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

JavaScript - Преобразуване на 24-цифрено шестнадесетично число в десетично, добавяне на 1 и след това преобразуване обратно?

Тази версия ще върне низ толкова дълъг, колкото входния низ, така че препълването се игнорира в случай, че входът е нещо като "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"));

Тази версия може да върне низ, който е с 1 знак по-дълъг от входния низ, тъй като въвеждане като "ffffffff" се пренася, за да стане "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"));

Бях любопитен да видя дали предложението на user2864740 за работа с 12-цифрени парчета ще предложи някакво предимство. За моя изненада, въпреки че кодът изглежда по-сложен, той всъщност е около два пъти по-бърз. Но първата версия също се изпълнява 500 000 пъти в секунда, така че няма да забележите в реалния свят.

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. Как да актуализирам документ на Mongo след поставянето му?

  2. Възможно ли е да се получат полетата в реда на проекция в Aggregation Frameworks mongo

  3. Как мога да добавя изображения в mongoDB?

  4. Извличане на конкретния MongoDB ключ от DuplicateKeyException, който всъщност е дублиран (Java/Spring)

  5. Свързване и създаване на MongoDB присъединявания с помощта на SQL:Част 1