Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript có trong một chuỗi biểu thị một số thập phân.
Hàm của chúng tôi phải chuyển đổi / mã hóa số thập phân này thành nhị phân dựa trên các quy tắc sau.
Đối với mỗi chữ số d của n
- Gọi k là số bit của d
- Chúng tôi viết k-1 lần chữ số 0, theo sau là chữ số 1
- Chúng tôi viết chữ số d dưới dạng chuỗi nhị phân, với bit ngoài cùng bên phải là ít quan trọng nhất
- Cuối cùng, chúng tôi nối kết quả của b) và c) để có được mã hóa của d
Cuối cùng, chúng tôi nối tất cả các kết quả nhận được với các chữ số của n.
Do đó, mã 2 là 0110 và 3 là 0111
Ví dụ
Sau đây là mã -
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));
Đầu ra
Sau đây là đầu ra của bảng điều khiển -
001111001111011101110001100000011000001101001101