Endianness Converter
Swap byte order of hex values: 16/32/64-bit, word swap.
4 bytes (32-bit)
This tool reorders the bytes of a hex value every way that occurs in practice: full byte reversal (big ↔ little endian), byte swap inside each 16-bit word, and 16-bit word swap inside each 32-bit group. Paste the bytes you captured and compare the three outputs against what you expected — the matching transform tells you exactly how the producing system stores data.
How it works
A multi-byte value has no inherent byte order — 0x12345678 can sit in memory as 12 34 56 78 (big-endian, network order) or 78 56 34 12 (little-endian, x86 and most MCUs). Protocols and file formats each pick a convention, and every boundary between conventions is a chance for corruption. The three transforms here cover the real-world cases: full reversal for endianness conversion, adjacent-byte swap for 16-bit-oriented transports, and 16-bit word swap for the register-pair orderings PLC vendors use.
Worked example
byte-reversed : 78 56 34 12 (big ↔ little)
16-bit byte swap: 34 12 78 56
word swap : 56 78 12 34 (ABCD → CDAB)
Parameters
| Parameter | Value | Notes |
|---|---|---|
| Byte reversal | any length | full endianness flip |
| 16-bit byte swap | even byte counts | AB CD → BA DC |
| Word swap | multiples of 4 bytes | AB CD EF GH → EF GH AB CD |
| Input format | hex bytes | spaces / 0x prefixes accepted |
C implementation
#include <stdint.h>
uint16_t swap16(uint16_t v) { return (v >> 8) | (v << 8); }
uint32_t swap32(uint32_t v)
{
return ((v & 0x000000FFu) << 24) | ((v & 0x0000FF00u) << 8) |
((v & 0x00FF0000u) >> 8) | ((v & 0xFF000000u) >> 24);
}
/* 32-bit word swap (ABCD -> CDAB), the classic Modbus fix: */
uint32_t wordswap32(uint32_t v) { return (v >> 16) | (v << 16); }FAQ
▸What is endianness in one sentence?
It is the order in which a multi-byte value's bytes are stored or transmitted: big-endian puts the most significant byte first (0x12345678 → 12 34 56 78), little-endian puts the least significant byte first (78 56 34 12).
▸Which swap do I need — byte reversal, byte swap, or word swap?
Full byte reversal converts between big- and little-endian of the whole value. 'Byte swap within 16-bit words' fixes data that passed through a system treating memory as 16-bit units (common with Modbus registers). 'Word swap' reorders the two 16-bit halves of a 32-bit value — the CDAB arrangement many PLCs use. This tool shows all three so you can pattern-match against what your device produces.
▸Why do Modbus 32-bit values often need a word swap rather than a byte swap?
Modbus transfers data as 16-bit registers, and each register travels big-endian. Vendors disagree only about the order of the two registers, so mismatches show up as swapped 16-bit halves (CDAB) rather than fully reversed bytes.
▸How can I tell my capture is byte-swapped?
Numbers look wildly wrong but not random — e.g. an expected small integer decodes as a huge one, and ASCII text appears with characters pairwise exchanged ('eHll o'). Run the bytes through the three transforms here and see which one produces sensible values.
▸Is my data uploaded?
No. All transforms run locally in your browser.