Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

แปลงตัวเลขเป็นอักขระใน JavaScript


สมมติว่าเรามีระบบการเข้าสู่ระบบที่ผู้ใช้จำเป็นต้องระบุ ID ผู้ใช้ที่ไม่ซ้ำกันเพื่อระบุตัวตนโดยไม่ซ้ำกัน และด้วยเหตุผลด้านความปลอดภัยที่ชัดเจน เราต้องการสร้างความสับสนให้กับ userID เพื่อให้เดาตัวเลขได้ยาก

โดยพื้นฐานแล้ว เราต้องเขียนสองฟังก์ชัน

  • เข้ารหัส (),

  • ถอดรหัส()

ฟังก์ชันแรกควรแปลงการป้อนตัวเลขของเราเป็นการแมปตัวอักษรฐาน 26 และฟังก์ชันที่สองควรแปลงการแมปตัวอักษรกลับเป็นตัวเลขเดิม

แม้ว่าจะใช้งานไม่ได้จริงเนื่องจากอัลกอริธึมการแฮชส่วนใหญ่ไม่มีการแปลงไปมา แต่สำหรับจุดประสงค์ของคำถามนี้ เราไม่ได้พิจารณาเรื่องนั้น

ตัวอย่างเช่น − หากตัวเลขคือ 31 ดังนั้น

encode(31) = 'ea'
and, decode('ea') = 31

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const num = 31;
const encode = num => {
   let res = '';
   const legend = 'zabcdefghijklmnopqrstuvwxy';
   while(num){
      const rem = num % (legend.length);
      res += legend[rem];
      num = (Math.floor(num / legend.length));
   };
   return res;
};
const decode = str => {
   let num = 0;
   const legend = 'zabcdefghijklmnopqrstuvwxy';
   for(let i = 0; i < str.length; i++){
      const ind = legend.indexOf(str[i]);
      num += (ind * Math.pow(legend.length, i));
   };
   return num;
}
console.log(encode(num));
console.log(decode('ea'));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

ea
31