Vaihda endianness
Syöte (heksa)
Vaihdettu tuloste
Tekniset tiedot
Miten tavujärjestyksen vaihto -työkalu toimii
Mitä työkalu tekee
Swap Endianness -työkalu kääntää heksasyötteen tavujärjestyksen määritettävän sanakoon (2, 4 tai 8 tavua) sisällä. Se on tarkoitettu muuntamiseen little-endian- ja big-endian-esitystapojen välillä kiinteäleveyksisille kokonaisluvuille, jotka on tallennettu heksana. Tätä tarvitaan usein binääritiedostomuotojen, verkkoprotokollien tai matalan tason debuggaustyökalujen kanssa, jotka ovat eri mieltä tavujärjestyksestä.
Yleiset kehittäjien käyttötapaukset
Reverse engineerit yhdenmukaistavat x86- tai ARM- (little-endian) sekä PowerPC- tai MIPS- (historiallisesti big-endian) heksadumppien esitystavan, jotta arvoja voidaan verrata arkkitehtuurien välillä. Verkkoinsinöörit muuntavat isäntätavujärjestyksen kokonaisluvut verkon tavujärjestykseen (aina big-endian) ennen kuin upottavat ne pakettikaappauksiin. Sulautettujen järjestelmien kehittäjät debuggaavat flashiin tallennettuja rakenteita kohdistamalla tavut uudelleen analyysityökalujensa odottamaan muotoon.
Tietomuodot, tyypit tai variantit
Syöte hyväksyy heksan `0x`-etuliitteellä tai ilman sekä mielivaltaisen välilyönnin. Tuloste esitetään selkeyden vuoksi välilyönnein eroteltuina pienaakkosina heksatavuina. Sanakoot 2, 4 ja 8 tavua vastaavat 16-, 32- ja 64-bittisiä kokonaislukuja. Useat sanat vaihdetaan toisistaan riippumatta: 4 tavun sanakoolla 12345678 9ABCDEF0 muuttuu muotoon 78 56 34 12 ja sen jälkeen F0 DE BC 9A.
Yleiset sudenkuopat ja reunatapaukset
Syötteen on oltava kokonainen määrä tavuja (parillinen määrä heksanumeroita) ja kokonainen määrä sanoja (jaollinen määritetyllä sanakoolla tavuina). Yhteensopimattomat koot palauttavat virheen sen sijaan, että dataa katkaistaisiin hiljaa. Verkon tavujärjestys on aina big-endian, kun taas x86 / ARM käyttävät little-endiania — vaihda tavut, kun luet tai kirjoitat wire-format-kokonaislukuja.
Milloin käyttää tätä työkalua vs. koodia
Käytä selainpohjaista työkalua kertaluonteisiin muunnoksiin binääridumppien lukemisen tai debuggaamisen aikana. Koodissa suosi `DataView`-rakennetta ja eksplisiittisiä `littleEndian`-lippuja JavaScriptissä, `byteorder='little'|'big'` Pythonin `int.from_bytes` -kutsussa, `binary.LittleEndian.Uint32` Go:ssa tai `ntohl` / `htonl` C:ssä — nämä ilmaisevat tarkoituksen selkeämmin ja välttävät heksan kautta round-tripin.