String.fromCharCode((x >> y) | z) операция?

Я работал с URL и URI, и у меня есть вопрос, касающийся функции, которую я использовал для кодирования / декодирования.

Я посмотрел в Интернете и нашел функцию для правильного кодирования моего кода, используя в основном метод String.fromCharCode(). Но вопрос о переданных параметрах.

У меня есть что-то вроде этого:

_utf8_encode : function (string) {
  string = string.replace(/\r\n/g,"\n");
  var utftext = "";
  for (var n = 0; n < string.length; n++) {
    var c = string.charCodeAt(n);
    if (c < 128) {
      utftext += String.fromCharCode(c);
    }
    else if((c > 127) && (c < 2048)) {
      utftext += String.fromCharCode((c >> 6) | 192);
      utftext += String.fromCharCode((c & 63) | 128);
    }
    else {
      utftext += String.fromCharCode((c >> 12) | 224);
      utftext += String.fromCharCode(((c >> 6) & 63) | 128);
      utftext += String.fromCharCode((c & 63) | 128);
    }
  }
  return utftext;
}

Меня беспокоит то, что операции внутри парентезы. Я провел несколько тестов со значением c, чтобы понять, смогу ли я прийти к какому-либо заключению, но мои усилия были напрасны. Кто-нибудь знает, что означают эти операторы (если я могу их так называть '>>', '&', '|')?

Обратите внимание, что функция работает, я просто хотел ее правильно понять.

Спасибо большое! До свидания!

0 ответов

Другие вопросы по тегам