วิธีใช้งาน
- ป้อนตัวเลขที่ต้องการแปลงในช่อง “ตัวเลข”
- เลือกฐานที่ใช้เขียนตัวเลขนั้นใน “ฐานของอินพุต” ตั้งแต่ 2 ถึง 36 หรือ Base62
- อ่านผลลัพธ์เป็นเลขฐานสอง ฐานแปด ฐานสิบ ฐานสิบหก Base36 และ Base62 ได้พร้อมกัน
- หากต้องการฐานอื่น ให้เลือกฐานนั้นใน “ฐานกำหนดเอง”
ตัวเลข ไม่ใช่ไบต์
เครื่องมือนี้แปลงค่าของตัวเลข เลขฐานสิบ 255 คือ 11111111 ในเลขฐานสอง 377 ในเลขฐานแปด ff ในเลขฐานสิบหก และ 73 ใน Base36
การเข้ารหัสไบต์อย่าง Base16 และ Base2 ทำสิ่งที่ต่างออกไป คือเข้ารหัสข้อความหรือไฟล์ ข้อความ 255 มีสามอักขระ ซึ่งจัดเก็บเป็นไบต์ 32 35 35 ในเลขฐานสิบหก หรือ 00110010 00110101 00110101 ในเลขฐานสอง ใช้หน้านี้เมื่อต้องการเลขฐานสิบหกของตัวเลข และใช้ตัวเข้ารหัสไบต์เมื่อต้องการเลขฐานสิบหกของอักขระหรือไฟล์
ระบบเลขฐานแบบค่าประจำหลักทำงานอย่างไร
ในทุกฐาน แต่ละหลักมีค่าเท่ากับฐานยกกำลังตำแหน่งของหลักนั้น โดยนับจากขวาเริ่มที่ศูนย์ เลขฐานสิบหก ff คือ 15 × 16 + 15 = 255 และเลขฐานสอง 11111111 คือ 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 ฐานที่มากกว่า 10 จะใช้ตัวอักษรเป็นหลักต่อจากตัวเลข ดังนั้นใน Base36 a หมายถึง 10 และ z หมายถึง 35 ส่วน Base62 ใช้ทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ตัวอักษรสองแบบนี้จึงมีค่าต่างกันใน Base62
เลขฐานสิบหกหนึ่งหลักแทน 4 บิตพอดี และเลขฐานแปดหนึ่งหลักแทน 3 บิต นี่คือเหตุผลที่โปรแกรมเมอร์ใช้เลขฐานสิบหกและฐานแปดเป็นวิธีเขียนเลขฐานสองแบบย่อ เช่น 1111 1111 จะกลายเป็น ff ทีละกลุ่ม
ตัวเลขขนาดใหญ่และจำนวนลบ
ตัวแปลงนี้ใช้จำนวนเต็มความแม่นยำไม่จำกัด (JavaScript BigInt) ตัวเลขที่ยาวมากจึงยังคงถูกต้องแม่นยำ เครื่องคิดเลขหลายตัวและตัวเลขธรรมดาของ JavaScript จะสูญเสียความแม่นยำเมื่อค่าเกิน 9007199254740991 (2 ยกกำลัง 53 ลบ 1) ตัวอย่างเช่น parseInt('ffffffffffffffff', 16) คืนค่า 18446744073709552000 ขณะที่ค่าที่ถูกต้อง ซึ่งเป็นจำนวนเต็มไม่มีเครื่องหมายขนาด 64 บิตที่ใหญ่ที่สุด คือ 18446744073709551615
จำนวนลบจะถูกแปลงพร้อมเครื่องหมายลบ -255 จึงเป็น -ff ในเลขฐานสิบหก ซึ่งไม่ใช่รูปแบบส่วนเติมเต็มสอง (two's complement) ที่ใช้กับจำนวนเต็มความกว้างคงที่ในหน่วยความจำ หากต้องการรูปแบบนั้น ให้บวก 2 ยกกำลังความกว้างบิตก่อน เช่น สำหรับ 8 บิต -1 + 256 = 255 ซึ่งคือ ff เครื่องมือนี้รองรับเฉพาะจำนวนเต็ม ไม่รองรับเศษส่วน ทุกอย่างทำงานในเบราว์เซอร์ของคุณ
การแปลงเลขฐานในโค้ด
// JavaScript
parseInt('ff', 16); // 255
(255).toString(2); // '11111111'
BigInt('0xffffffffffffffff').toString(10); // '18446744073709551615'
# Python
int('ff', 16) # 255
bin(255), oct(255), hex(255) # ('0b11111111', '0o377', '0xff')
คำถามที่พบบ่อย
จะแปลงเลขฐานสองเป็นเลขฐานสิบได้อย่างไร
ป้อนเลขฐานสอง เลือกฐาน 2 แล้วอ่านผลลัพธ์เลขฐานสิบ หากคำนวณด้วยมือ ให้รวมค่าประจำหลักของทุกหลักที่เป็น 1 เช่น 1010 ในเลขฐานสองคือ 8 + 2 = 10
จะแปลงเลขฐานสิบเป็นเลขฐานสิบหกได้อย่างไร
ป้อนตัวเลขโดยเลือกฐาน 10 แล้วอ่านผลลัพธ์เลขฐานสิบหก หากคำนวณด้วยมือ ให้หารด้วย 16 ซ้ำ ๆ แล้วเขียนเศษเรียงย้อนกลับ เช่น 255 หารด้วย 16 ได้ 15 เศษ 15 จึงได้ ff
ขนาดของตัวเลขมีขีดจำกัดหรือไม่
ไม่มีขีดจำกัดตายตัว เครื่องมือใช้การคำนวณแบบ BigInt ตัวเลขที่มีหลายร้อยหลักจึงแปลงได้อย่างแม่นยำ เพียงแต่ตัวเลขที่ยาวมากจะใช้เวลานานขึ้นเล็กน้อย
ทำไมเลขฐานสิบหกของ 255 ในหน้านี้จึงต่างจากตัวเข้ารหัส Base16
แปลงตัวเลขที่มีทศนิยมได้หรือไม่
ไม่ได้ ตัวแปลงนี้ใช้ได้กับจำนวนเต็มเท่านั้น เศษส่วนอย่าง 0.1 มักไม่สามารถแสดงค่าได้อย่างแม่นยำในฐานอื่น จึงอยู่นอกขอบเขตของเครื่องมือนี้