Python เป็นภาษาที่ยืดหยุ่น สามารถจัดการแปลงเลขฐานสิบเป็นเลขฐานสองได้หลายวิธี บทความนี้เสนอ 2 วิธีหลักในการแปลงและสร้างเป็นลิสต์ของตัวเลข 0 และ 1
1. ใช้ format()
ใช้ format specifier {0:0b} เพื่อแปลงจำนวนเต็มเป็นสตริงเลขฐานสอง แล้วแปลงแต่ละตัวอักษรเป็นจำนวนเต็มเก็บในลิสต์
ตัวอย่าง
Dnum = 11
print("Given decimal : " + str(Dnum))
# แปลงเป็นเลขฐานสอง แล้วสร้างลิสต์
binnum = [int(i) for i in list('{0:0b}'.format(Dnum))]
print("Converted binary list is : ", binnum)
ผลลัพธ์
Given decimal : 11 Converted binary list is : [1, 0, 1, 1]
2. ใช้ bin()
ฟังก์ชัน built-in bin() แปลงจำนวนเต็มเป็นสตริงเลขฐานสองนำหน้าด้วย '0b' จึงต้อง slice ตัวอักษร 2 ตัวแรกออกก่อน
ตัวอย่าง
Dnum = 11
print("Given decimal : " + str(Dnum))
# ใช้ bin() และ slice [2:] เพื่อตัด '0b' ออก
binnum = [int(i) for i in bin(Dnum)[2:]]
print("Converted binary list is : ", binnum)
ผลลัพธ์
Given decimal : 11 Converted binary list is : [1, 0, 1, 1
เปรียบเทียบ: ทั้งสองวิธีให้ผลลัพธ์เหมือนกัน bin() เร็วกว่าเล็กน้อยและเป็น idiomatic Python มากกว่า ในขณะที่ format() ให้ความยืดหยุ่นในการจัดรูปแบบเพิ่มเติม เช่น padding ด้วยศูนย์นำหน้า