Невозможно получить длинное значение из побитовой операции

Начиная с ECMAScript 2018, JavaScript, наконец, поддерживает свойство Unicode escapes изначально.

Для более старых версий вам необходимо либо определить все соответствующие диапазоны Unicode. Или вы можете использовать пакет XRegExp Стивена Левитана с юникодными надстройками и использовать его ярлыки свойств Unicode:

var regex = new XRegExp("^\\p{L}*$")
var a = "abcäöüéèê"
if (regex.test(a)) {
    // Match
} else {
    // No Match
}

0
задан Karol Dowbecki 17 January 2019 в 11:59
поделиться

2 ответа

Некоторые операторы применяют унарное числовое преобразование к одному операнду, который должен создавать значение числового типа, а если операнд имеет тип времени байта, короткий или char, он переводится в значение типа int с помощью расширяющееся примитивное преобразование (§5.1.2).

String TYPE = "type";
long TOTAL_MASK = 0xFFFFFFFF;
long BASE_INBOX_TYPE = ~20; // (~)promotion to int first (not necessary)
long BASE_TYPE_MASK = 0x1F;

long type = (TOTAL_MASK - BASE_TYPE_MASK) | BASE_INBOX_TYPE;

System.out.println(type);
0
ответ дан corneliouz Bett 17 January 2019 в 11:59
поделиться

Integer.valueOf(String) используется для анализа числового литерала из текста, а не для оценки произвольного выражения. Согласно методу javadoc:

Аргумент интерпретируется как представляющий десятичное целое число со знаком, точно так же, как если бы аргумент был передан методу parseInt(java.lang.String).

Вам необходимо написать выражение в виде кода, например :

long type = (TOTAL_MASK - BASE_TYPE_MASK) | BASE_OUTBOX_TYPE;
0
ответ дан Karol Dowbecki 17 January 2019 в 11:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: