169 похожих чатов

В целом вот функция реализующая спеку, если тебе хочется руками

это делать
function Decode(string, reservedSet) {
const strLen = string.length;
let result = "";
for (let k = 0; k < strLen; k++) {
let chr = string[k];
let str = chr;
if (chr === '%') {
const start = k;
let byte = +`0x${string.slice(k+1, k+3)}`;
if (Number.isNaN(byte) || k + 2 >= strLen) throw new URIError;
k += 2;
if (byte < 0x80) {
chr = String.fromCharCode(byte);
str = reservedSet.includes(chr) ? string.slice(start, k + 1) : chr;
} else { // the most significant bit in byte is 1
let n = Math.clz32(byte ^ 0xFF) - 24; // Position of first right-most 10 in binary
if (n < 2 || n > 4) throw new URIError;
let value = byte & (0x3F >> n);
if (k + (3 * (n - 1)) >= strLen) throw new URIError;
for (let j = 1; j < n; j++) {
if (string[++k] !== '%') throw new URIError;
let byte = +`0x${string.slice(k+1, k+3)}`;
if (Number.isNaN(byte) || ((byte & 0xC0) != 0x80)) throw new URIError;
k += 2;
value = (value<<6) + (byte & 0x3F);
}
if (value >= 0xD800 && value < 0xE000 || value >= 0x110000) throw new URIError;
if (value < 0x10000) {
chr = String.fromCharCode(value);
str = reservedSet.includes(chr) ? string.slice(start, k + 1) : chr;
} else { // value is ≥ 0x10000
const low = ((value - 0x10000) & 0x3FF) + 0xDC00;
const high = (((value - 0x10000) >> 10) & 0x3FF) + 0xD800;
str = String.fromCharCode(high) + String.fromCharCode(low);
}
}
}
result += str;
}
return result;
}

2 ответов

10 просмотров

ты сам делал?

Danila- Автор вопроса

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

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта