แปลงข้อความเป็นเลขฐาน 16

อ่านข้อมูลที่ดัมป์จากหน่วยความจำ ตรวจดูว่าโปรโตคอลส่งอะไรออกไปบนสายจริงๆ หรือแกะโจทย์ CTF ไม่ช้าก็เร็วคุณต้องดูไบต์ที่อยู่เบื้องหลังสตริง วางข้อความลงไป แล้วเครื่องมือนี้จะคืนค่าออกมาเป็นเลขฐาน 16 ทีละไบต์ จะเว้นวรรคแบบ hexdump (48 65 6c 6c 6f) หรือติดกันรวดเดียว (48656c6c6f) ก็ได้ สลับโหมดแล้วทิศทางจะกลับกัน เลขฐาน 16 ที่คุณวางจะกลายเป็นข้อความที่อ่านออกอีกครั้ง

เครื่องมือนี้ทำงานอย่างไร

  1. 1

    เลือกทิศทาง

    ข้อความเป็นเลขฐาน 16 จะเข้ารหัสสิ่งที่คุณพิมพ์ ส่วนเลขฐาน 16 เป็นข้อความจะแปลงกลับเป็นตัวอักษร

  2. 2

    เลือกตัวคั่น

    เวลาเข้ารหัส จะใส่ช่องว่างหนึ่งช่องระหว่างไบต์ หรือไม่ใส่เลยก็ได้ มีสองตัวเลือกนี้เท่านั้น

  3. 3

    วางข้อมูลของคุณ

    ข้อความจะถูกอ่านเป็น UTF-8 ส่วนเลขฐาน 16 จะมีคำนำหน้า 0x หรือ \x จุลภาค ช่องว่าง หรือการขึ้นบรรทัดใหม่ปนมาก็ได้ ระบบตัดออกให้เอง

  4. 4

    แปลงและคัดลอก

    ผลลัพธ์จะปรากฏด้านล่างพร้อมปุ่มคัดลอก ไม่มีการดาวน์โหลดไฟล์ใดๆ

ทำไมต้องเลขฐาน 16 ไม่ใช่ฐาน 10

เลขฐาน 16 หนึ่งหลักครอบคลุม 4 บิตพอดี สองหลักจึงครอบคลุมหนึ่งไบต์พอดีทุกครั้ง เลขฐาน 10 บังคับให้ต้องคำนวณเพื่อรู้ว่าค่ายังอยู่ในช่วงหรือไม่ (128 อยู่ในช่วงไหม แล้ว 256 ล่ะ) ขณะที่เลขฐาน 16 แสดงให้เห็นตรงๆ 00 คือไบต์ที่เล็กที่สุด ff คือใหญ่ที่สุด และทุกไบต์ระหว่างนั้นกว้างสองตัวอักษรเท่ากันหมด ความลงตัวนี้เองที่ทำให้ข้อมูลดัมป์หน่วยความจำ การจับแพ็กเก็ต ลายเซ็นไฟล์ และรหัสสี ถูกเขียนด้วยเลขฐาน 16

เครื่องมือนี้ให้ผลลัพธ์อย่างไรจริงๆ

  • เป็นตัวพิมพ์เล็กเสมอ ตัวเข้ารหัสเขียน 6c ไม่เคยเขียน 6C เลขฐาน 16 ไม่แยกตัวพิมพ์ใหญ่เล็ก จึงไม่มีอะไรสูญหาย แต่ถ้ารูปแบบปลายทางต้องการตัวพิมพ์ใหญ่ ให้นำผลลัพธ์ไปผ่านเครื่องมือแปลงตัวพิมพ์
  • สองหลักต่อหนึ่งไบต์เสมอ อักขระแท็บคือ 09 ไม่ใช่ 9 เพื่อให้นับขอบเขตของไบต์ได้
  • ช่องว่างหรือไม่มีอะไรเลย มีตัวคั่นแค่สองแบบนี้ ฝั่งเข้ารหัสไม่มีคำนำหน้า 0x หรือ \x ให้ ถ้าต้องการสตริง escape ของ C หรือ Python ให้เติมเองในโปรแกรมแก้ไขข้อความ
  • เป็น UTF-8 ตลอดทั้งกระบวนการ ข้อความถูกวัดเป็นไบต์ ไม่ใช่จำนวนตัวอักษร

เลขฐาน 16 กับ Unicode

H ใช้พื้นที่หนึ่งไบต์ใน UTF-8 จึงกลายเป็น 48 ส่วนทุกอย่างที่อยู่นอก ASCII ล้วนใช้มากกว่านั้น

อักขระ เลขฐาน 16 แบบ UTF-8 ไบต์
A 41 1
é c3 a9 2
€ e2 82 ac 3
🚀 f0 9f 9a 80 4

ดังนั้น Hello เข้ารหัสได้เป็น 48 65 6c 6c 6f คือห้าตัวอักษรและห้าไบต์ ส่วน café เข้ารหัสได้เป็น 63 61 66 c3 a9 คือสี่ตัวอักษรแต่ห้าไบต์ เพราะ é ต้องใช้สองไบต์ อักษรไทยยิ่งกินพื้นที่มากกว่านั้น ตัวอักษรไทยแต่ละตัวใช้สามไบต์ เช่น ก ตัวเดียวก็ได้ e0 b8 81 แล้ว และสระกับวรรณยุกต์ก็นับเป็นตัวอักษรของมันเองอีกตัวละสามไบต์ ถ้าสตริงสั้นๆ ให้คู่เลขฐาน 16 มากกว่าที่คุณคาดไว้ มักเป็นเพราะเหตุนี้

ตัวถอดรหัสรับรูปแบบใดบ้าง

วางรูปแบบใดก็ได้ต่อไปนี้แล้วคุณจะได้ Hello กลับมา

  • 48 65 6c 6c 6f แบบ hexdump
  • 48656c6c6f แบบดิบไม่มีตัวคั่น
  • 0x48656c6c6f แบบค่าคงที่จำนวนเต็ม
  • \x48\x65\x6c\x6c\x6f แบบ escape ของ C และ Python
  • 48,65,6C,6C,6F คั่นด้วยจุลภาค และปนตัวพิมพ์ใหญ่เล็กอย่างไรก็ได้

คำนำหน้า จุลภาค ช่องว่าง แท็บ และการขึ้นบรรทัดใหม่ จะถูกตัดออกก่อนถอดรหัส ส่วนอย่างอื่นไม่ถูกตัด ยัติภังค์ใน 48-65 เครื่องหมาย # หน้ารหัสสี หรือตัวอักษรที่เลย f ไปแล้ว จะทำให้การถอดรหัสหยุดลง เช่นเดียวกับจำนวนหลักที่เป็นเลขคี่ เพราะครึ่งไบต์กลายเป็นตัวอักษรไม่ได้ ในกรณีเหล่านี้เครื่องมือเลือกที่จะไม่คืนค่าอะไรเลย ดีกว่าเดาผลลัพธ์ที่ไม่ครบ ถ้าช่องผลลัพธ์ยังว่างอยู่ ให้มองหาสาเหตุตรงจุดนี้

รหัสสีเลขฐาน 16 ใช้สัญกรณ์เดียวกัน แต่ไม่ใช่เนื้อหาเดียวกัน

#ff8800 ใช้ระบบฐาน 16 แบบเดียวกัน แต่สามไบต์นั้นอธิบายช่องสีแดง เขียว และน้ำเงิน ไม่ใช่ตัวอักษร ลองตัด # ออกแล้วถอดรหัสที่นี่ คุณจะได้ไบต์ดิบสามไบต์ที่ประกอบกันไม่เป็นข้อความที่อ่านออก งานแบบนั้นควรใช้เครื่องมือเลือกสีแทน

คำถามที่พบบ่อย

เหมือนกัน เฮกซาเดซิมอลกับ base16 เป็นสองชื่อของระบบเดียวกัน คือมีสิบหกหลัก (0 ถึง 9 และ a ถึง f) แต่ละหลักบรรจุ 4 บิต

จากเครื่องมือนี้ไม่ได้ ตัวเข้ารหัสเขียนเป็นตัวพิมพ์เล็กเสมอ เนื่องจากเลขฐาน 16 ไม่แยกตัวพิมพ์ 4f กับ 4F จึงเป็นไบต์เดียวกัน ถ้ารูปแบบที่คุณใช้ต้องการตัวพิมพ์ใหญ่ ให้นำผลลัพธ์ไปผ่านเครื่องมือแปลงตัวพิมพ์ ส่วนตัวถอดรหัสอ่านได้ทั้งสองแบบอยู่แล้ว

ตัวถอดรหัสรับเฉพาะหลัก 0 ถึง 9 และ a ถึง f ในจำนวนที่เป็นเลขคู่ หลังจากตัดคำนำหน้า 0x และ \x จุลภาค และช่องว่างออกแล้ว ยัติภังค์ เครื่องหมาย # ตัวอักษรที่เลย f หรือหลักที่ขาดไปหนึ่งตัว ล้วนทำให้ข้อมูลไม่ถูกต้อง และเครื่องมือเลือกให้ผลลัพธ์ว่างมากกว่าผลลัพธ์ที่ผิด ลองนับจำนวนหลักและมองหาเครื่องหมายวรรคตอนที่หลุดเข้ามา

อิโมจิส่วนใหญ่อยู่ในระนาบเสริมของ Unicode ซึ่ง UTF-8 เก็บด้วยสี่ไบต์ ส่วนอักขระ ASCII ล้วนยังคงใช้หนึ่งไบต์ต่อตัว จึงเป็นเหตุผลที่ข้อความภาษาอังกฤษได้หนึ่งคู่ต่อหนึ่งตัวอักษร แต่ภาษาไทยไม่เป็นเช่นนั้น

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

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

เครื่องมือที่เกี่ยวข้อง

เครื่องแปลงตัวเลขเป็นคำไทย

เขียนจำนวนไม่เกิน 18 หลักเป็นคำไทย หรือเขียนจำนวนบาทและสตางค์ตามค่าที่กรอกในเบราว์เซอร์ รองรับเลขอารบิกกับเลขไทยและไม่ปัดค่า

เครื่องมือสร้างตัวอักษรวงกลม

แปลงข้อความธรรมดาให้เป็นตัวอักษรวงกลม (Ⓐ Ⓑ Ⓒ) ที่คัดลอกแล้ววางลงในไบโอ Instagram, TikTok และ Discord ได้ มีทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็กในวงกลม พร้อมตัวเลขในวงกลม โดยไม่ต้องใช้แอป

สัญลักษณ์ลูกศรสำหรับคัดลอก

คัดลอกลูกศร Unicode ที่ใช้บ่อยได้ในคลิกเดียว ทั้งแบบตรง สองเส้น ทแยง มีขอ วงกลม และสามเหลี่ยม สำหรับเอกสาร แชต และงานออกแบบ

สัญลักษณ์น้อยกว่าหรือเท่ากับ

คัดลอกสัญลักษณ์ ≤ และสัญลักษณ์เปรียบเทียบทางคณิตศาสตร์ที่เกี่ยวข้อง รวมถึง Unicode เอนทิตี HTML และการเขียน LaTeX สำหรับสเปรดชีต งานวิจัย และหน้าเว็บ

ตัวเข้ารหัสเอนทิตี HTML

แปลงอักขระ HTML ที่ต้องระวังห้าตัวเป็นเอนทิตีแบบคงที่ หรือถอดรหัสเอนทิตีเป็นข้อความในเบราว์เซอร์ของคุณ

เครื่องกำเนิดข้อความแบบวงกลม

แปลงข้อความธรรมดาเป็นอักขระ Unicode แบบวงกลม รูปแบบโครงร่าง เติม และวงกลมตัวเลขสำหรับประวัติโซเชียล แชท และเอกสาร

เครื่องมือนี้มีให้บริการในภาษาอื่น