PIDs decoder

HTML

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.min.css">
<div>PIDy 01-20:
  <input type="text" id="pids00">
</div>
<div>PIDy 21-40:
  <input type="text" id="pids20">
</div>
<div>PIDy 41-60:
  <input type="text" id="pids40">
</div>
<div>PIDy 61-80:
  <input type="text" id="pids60">
</div>
<div>PIDy 81-A0:
  <input type="text" id="pids80">
</div>

<button id="decode">
  Dekoduj!
</button>
<div id="result" style="display: none">
  <div>
    Dostępne pidy: <span class="available-pids"></span>
  </div>
  Wpisz do konfiguracji:
  <pre id="config"></pre>
</div>

CSS

div {
  margin: 8px;
}

.available-pids {
  font-weight: bold;
}

pre {
  background-color: #ffe2a6;
}

JavaScript

var decode = function(v, base) {
  var res = [];
  if (!v)
    return res;
  v = v.replace(' ', '');
  v = parseInt(v, 16);
  for (var i = 0; i < 31; ++i) {
    if (v & (1 << (31 - i))) {
      res.push(base + i + 1);
    }
  }
  return res;
}

$("#decode").button().click(function() {
  var pids = [];
  var v = $("#pids00").val();
  if (v) {
    pids = pids.concat(decode(v, 0x00));
  }
  var v = $("#pids20").val();
  if (v) {
    pids = pids.concat(decode(v, 0x20));
  }
  var v = $("#pids40").val();
  if (v) {
    pids = pids.concat(decode(v, 0x40));
  }
  var v = $("#pids60").val();
  if (v) {
    pids = pids.concat(decode(v, 0x60));
  }
  var v = $("#pids80").val();
  if (v) {
    pids = pids.concat(decode(v, 0x80));
  }

  var pidss = [];
  for (var i = 0; i < pids.length; ++i) {
    var s = pids[i].toString(16).toUpperCase();
    if (s.length == 1)
      s = '0' + s;
    pidss.push(s);
  }

  $("#config").text("ecm.available_pids = " + pidss.join(' '));
  $(".available-pids").text(pidss.join(' '));

  console.log(pidss);


  $("#result").show();
})