Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

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


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

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

  • encode()

  • decode()

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

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

ตัวอย่างเช่น ถ้าตัวเลขคือ 31 แล้ว

encode(31) = 'ea' และ 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