Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Mã hóa chuỗi số thành chuỗi 0 và 1 trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi đại diện cho số thập phân. Hàm sẽ chuyển đổi/mã hóa thập phân này thành nhị phân dựa trên các quy tắc: Với mỗi chữ số d của n, cho k là số bit của d. Viết k-1 lần chữ số 0 theo sau bởi chữ số 1. Viết d dưới dạng chuỗi nhị phân, bit phải là bit ít quan trọng nhất. Cuối cùng, nối kết quả b) và c) để được mã của d. Nối tất cả kết quả cho các chữ số của n. Do đó, mã 2 là 0110 và 3 là 0111.

Ví dụ

Dưới đây là mã nguồn:

const str = '77338855'; 
const encodeNumString = (str = '') => { 
  const buildarray = (string = '') => { 
    let n = string.split(''), res = ''; 
    n.forEach(x => { 
      let num = Number(x).toString(2); 
      num = '0'.repeat(num.length -1) + '1' + num; 
      res += num; 
    }); 
    return res; 
  } 
  const arr = []; 
  let res = ""; 
  for (let i = 0; i < 10; i++){ 
    arr.push(buildarray(String(i))); 
  }; 
  while (str.length){ 
    for (let i = 0; i < 10; i++) { 
      if (str.startsWith(arr[i])) { 
        res += String(i); 
        str = str.slice(arr[i].length); 
        break; 
      } 
    } 
  } 
  return res; 
}; 
console.log(encodeNumString(str));

Kết quả

Kết quả đầu ra trong console:

001111001111011101110001100000011000001101001101