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