Text till hex

Läsa en minnesdump, kontrollera vad ett protokoll faktiskt lade ut på tråden, plocka isär en CTF-uppgift: förr eller senare behöver du byten bakom en sträng. Klistra in text så ger den här omvandlaren tillbaka den byte för byte i hexadecimal form, antingen med mellanslag som i en hexdump (48 65 6c 6c 6f) eller i ett svep (48656c6c6f). Byt läge så går det åt andra hållet: inklistrad hex blir läsbar text igen.

Så arbetar omvandlaren

  1. 1

    Välj riktning

    Text till hex kodar det du skriver. Hex till text gör om det till tecken igen.

  2. 2

    Välj avgränsare

    Vid kodning ett enda mellanslag mellan byten eller inget alls. Fler val finns inte.

  3. 3

    Klistra in din inmatning

    Text läses som UTF-8. Hex får komma med prefixen 0x eller \x, med kommatecken, mellanslag eller radbrytningar: de rensas bort åt dig.

  4. 4

    Omvandla och kopiera

    Resultatet dyker upp nedanför med en kopieringsknapp. Ingenting laddas ner.

Varför hex och inte decimalt

En hexsiffra täcker exakt 4 bitar, alltså täcker två hexsiffror exakt en byte, varje gång. Decimalt tvingar fram räknande för att avgöra om ett värde fortfarande får plats (ligger 128 inom intervallet? och 256?), medan hex visar det: 00 är den minsta byten, ff den största, och varje byte däremellan är två tecken bred. Den prydliga passformen är skälet till att minnesdumpar, paketfångster, filsignaturer och färgkoder skrivs i hex.

Vad den här omvandlaren faktiskt ger

  • Alltid gemener. Kodaren skriver 6c, aldrig 6C. Hex skiljer inte på gemener och versaler, så ingenting går förlorat, men kräver ditt målformat versaler skickar du resultatet genom en omvandlare för versaler och gemener.
  • Alltid två siffror per byte. En tabb är 09, inte 9, så att bytegränserna går att räkna.
  • Mellanslag eller ingenting. Det är de enda två avgränsarna. Vid kodning läggs inget 0x- eller \x-prefix till, så lägg till dem i din editor om du behöver escape-strängar för C eller Python.
  • UTF-8 rakt igenom. Text mäts i byte, inte i tecken.

Hex och Unicode

H tar en byte i UTF-8 och blir därför 48. Allt utanför ren ASCII tar mer:

Tecken UTF-8-hex Byte
A 41 1
é c3 a9 2
€ e2 82 ac 3
🚀 f0 9f 9a 80 4

Så Hello kodas till 48 65 6c 6c 6f, fem tecken och fem byte, medan café kodas till 63 61 66 c3 a9: fyra tecken, men fem byte, eftersom é behöver två. Samma sak gäller våra egna bokstäver, å är c3 a5 och ö är c3 b6. Ger en kort sträng fler hexpar än du väntade dig är det oftast förklaringen.

Vad avkodaren tar emot

Klistra in något av dessa så får du tillbaka Hello:

  • 48 65 6c 6c 6f, i hexdump-stil
  • 48656c6c6f, rått och utan avgränsare
  • 0x48656c6c6f, i stil med en heltalslitteral
  • \x48\x65\x6c\x6c\x6f, escape-sekvenser från C och Python
  • 48,65,6C,6C,6F, kommaseparerat och i valfri blandning av versaler och gemener

Prefix, kommatecken, mellanslag, tabbar och radbrytningar tas bort före avkodningen. Övrigt tas inte bort: ett bindestreck i 48-65, ett # framför en färgkod eller en bokstav bortom f avbryter avkodningen, och det gör även ett udda antal siffror, eftersom en halv byte inte kan bli ett tecken. I de fallen lämnar verktyget hellre ingenting alls än gissar sig till ett halvt resultat. Står utmatningsrutan tom är det där du ska leta.

Hexfärger använder samma notation, men inte samma innehåll

#ff8800 bygger på samma system med basen 16, men de tre byten beskriver kanalerna rött, grönt och blått, inte tecken. Ta bort # och avkoda det här, så får du tre råa byte som inte bildar läsbar text. Använd hellre en färgväljare för det.

Vanliga frågor

Ja. Hexadecimal och base16 är två namn på samma system: sexton siffror (0 till 9 och a till f), var och en med 4 bitar.

Inte ur det här verktyget. Kodaren skriver alltid gemener. Eftersom hex inte skiljer på versaler och gemener är 4f och 4F samma byte, så skicka resultatet genom valfri omvandlare för versaler och gemener om ditt format kräver det. Avkodaren läser båda formerna utan invändningar.

Avkodaren tar bara emot siffrorna 0 till 9 och a till f i jämnt antal, efter att prefixen 0x och \x, kommatecken och blanksteg har tagits bort. Ett bindestreck, ett #, en bokstav bortom f eller en saknad siffra gör inmatningen ogiltig, och verktyget föredrar ett tomt resultat framför ett felaktigt. Räkna siffrorna och leta efter vilsen skiljetecken.

De flesta emojier ligger i Unicodes tilläggsplan, som UTF-8 lagrar i fyra byte. Rena ASCII-tecken stannar på en byte styck, och därför ger engelsk text ett par per tecken medan svensk text med å, ä och ö inte gör det.

Nej. Det här är ett textfält, så det hanterar vad du kan skriva eller klistra in. För binära data är base64 både kompaktare och lättare att transportera.

Ja. Omvandlingen körs på vår server, så det du klistrar in följer med förfrågan och resultatet kommer tillbaka. Vi loggar bara åtgärden och de alternativ du valt, aldrig själva texten, och texten sparas inte efter svaret. För verkligt känsligt material bör du använda en omvandlare som kör offline på din egen dator.

Relaterade verktyg

Verktyget finns på andra språk