สลับเอนเดียนเนส
อินพุต (ฐานสิบหก)
เอาต์พุตหลังสลับ
รายละเอียดทางเทคนิค
เครื่องมือสลับ Endianness ทำงานอย่างไร
เครื่องมือนี้ทำอะไร
เครื่องมือ Swap Endianness จะสลับลำดับไบต์ของอินพุตเลขฐานสิบหกภายในขนาดคำ (word size) ที่กำหนดได้ (2, 4 หรือ 8 ไบต์) ออกแบบมาสำหรับการแปลงระหว่างการแทนค่าแบบ little-endian และ big-endian ของจำนวนเต็มความกว้างคงที่ที่เก็บเป็น hex ซึ่งเป็นความต้องการที่พบบ่อยเมื่อทำงานกับฟอร์แมตไฟล์ไบนารี โปรโตคอลเครือข่าย หรือเครื่องมือดีบักระดับล่างที่ไม่ตรงกันเรื่องลำดับไบต์
กรณีการใช้งานทั่วไปของนักพัฒนา
นักรีเวิร์สเอนจิเนียร์ทำให้ hex dump จาก x86 หรือ ARM (little-endian) และ PowerPC หรือ MIPS (ในอดีตเป็น big-endian) อยู่ในรูปแบบเดียวกัน เพื่อให้เปรียบเทียบค่าข้ามสถาปัตยกรรมได้ วิศวกรเครือข่ายแปลงจำนวนเต็มแบบ host-byte-order ไปเป็น network byte order (เป็น big-endian เสมอ) ก่อนฝังลงใน packet capture นักพัฒนา embedded ดีบักโครงสร้างที่เก็บในแฟลชโดยจัดเรียงไบต์ใหม่ให้ตรงกับฟอร์แมตที่เครื่องมือวิเคราะห์ของตนคาดหวัง
รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย
อินพุตรองรับ hex ที่มีหรือไม่มีคำนำหน้า `0x` และช่องว่างแบบใดก็ได้ เอาต์พุตจะแสดงเป็นไบต์ hex ตัวพิมพ์เล็กคั่นด้วยช่องว่างเพื่อความชัดเจน ขนาดคำ 2, 4 และ 8 ไบต์สอดคล้องกับจำนวนเต็ม 16-, 32- และ 64-บิตตามลำดับ หลายคำจะถูกสลับแยกกัน: เมื่อใช้ขนาดคำ 4 ไบต์, 12345678 9ABCDEF0 จะกลายเป็น 78 56 34 12 ตามด้วย F0 DE BC 9A
ข้อผิดพลาดที่พบบ่อยและกรณีขอบ
อินพุตต้องมีจำนวนไบต์เป็นจำนวนเต็ม (จำนวนหลัก hex ต้องเป็นเลขคู่) และต้องมีจำนวนคำเป็นจำนวนเต็ม (หารลงตัวด้วยขนาดคำที่กำหนดเป็นไบต์) ขนาดที่ไม่ตรงกันจะคืนข้อผิดพลาดแทนที่จะตัดทิ้งเงียบๆ Network byte order เป็น big-endian เสมอ ขณะที่ x86 / ARM ใช้ little-endian — ให้สลับไบต์เมื่ออ่านหรือเขียนจำนวนเต็มใน wire format
เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด
ใช้เครื่องมือบนเบราว์เซอร์สำหรับการแปลงแบบครั้งเดียวระหว่างอ่านไบนารีดัมพ์หรือดีบัก ในโค้ด ให้ใช้ `DataView` พร้อมแฟลก `littleEndian` แบบชัดเจนใน JavaScript, `byteorder='little'|'big'` ใน `int.from_bytes` ของ Python, `binary.LittleEndian.Uint32` ใน Go หรือ `ntohl` / `htonl` ใน C — สิ่งเหล่านี้สื่อเจตนาได้ชัดกว่าและหลีกเลี่ยงการแปลงไป-กลับผ่าน hex