Wat is 48 65 6C 6C 6F als tekst?
Hello 48 is H, 65 is e, 6C is l en 6F is o in ASCII en UTF-8.
Zet hex om naar tekst en terug. Plak hex in elke vorm — met spaties, 0x, \x, xxd- of hexdump-uitvoer, Java- of C-byte-arrays — en ASCII, UTF-8, GBK of UTF-16 wordt automatisch herkend. Draait in je browser.
Gelezen als kale hex · 13 bytes
Hello, 世界
Automatisch gedetecteerd: UTF-8 — elke multibyte-reeks is welgevormd.
Het resultaat is zelf hex — waarschijnlijk is het twee keer omgezet. Nog een ronde geeft:
| Codering | Gelezen als |
|---|---|
| UTF-8 Foutloos gedecodeerd | Hello, 世界 |
| GBK / GB18030 Foutloos gedecodeerd | Hello, 涓栫晫 |
| UTF-16LE Bevat niet-decodeerbare bytes | 效汬Ɐ隸闧� |
| UTF-16BE Bevat niet-decodeerbare bytes | 䡥汬漬⃤뢖� |
| ISO-8859-1 Foutloos gedecodeerd | Hello, ä¸<96>ç<95><8C> |
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
Geschreven en gecontroleerd door de ontwikkelaars die de coderingstools van Go Tools bouwen. Elke hexwaarde en elke uitvoer op deze pagina komt uit de eigen engine van de pagina en wordt gecontroleerd met geautomatiseerde tests.
Hello 48 is H, 65 is e, 6C is l en 6F is o in ASCII en UTF-8.
Meestal 3 bytes in UTF-8, 2 in GBK 你 is E4 BD A0 in UTF-8 en C4 E3 in GBK.
CR LF (\r\n) Carriage return gevolgd door line feed — het regeleinde van Windows, HTTP en de meeste seriële commandosets.
41 De kleine letter a is 61; hoofdletter en kleine letter verschillen altijd 20.
Hexadecimaal is een manier om bytes te noteren: elke byte, van 0 tot 255, wordt geschreven als twee cijfers van 00 tot FF. Hex naar een string omzetten maakt van die bytes weer leesbare tekst, en daarbij hoort altijd de keuze voor een tekencodering — de tabel die bepaalt welke byte, of reeks bytes, voor welk teken staat.
Bij Engelse tekst merk je die keuze zelden, omdat ASCII, UTF-8, GBK en de meeste andere coderingen het eens zijn over de bytes 00 tot 7F. Bij al het andere zie je het meteen. De bytes C4 E3 BA C3 zijn 你好 in GBK en ongeldig in UTF-8, terwijl 你好 in UTF-8 E4 BD A0 E5 A5 BD is. De hex is maar de helft van de informatie; de codering is de andere helft.
String naar hex is het omgekeerde: encodeer de tekst naar bytes en schrijf dan elke byte als twee hexcijfers. Ontwikkelaars gebruiken dat om precies te zien wat er over een seriële lijn of in een databasekolom gaat, om binaire data in broncode op te nemen en om te vergelijken wat twee systemen werkelijk hebben verstuurd.
$ echo 48656c6c6f | xxd -r -p
Hello
>>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好'
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte Met spaties, compact, gescheiden door dubbele punten of streepjes, 0x-waarden, \x-escapes, %-codering, C-, Go- en Java-arrays, de signed Arrays.toString-uitvoer van Java, Python-bytesliterals, Node.js-buffers en complete schermen van xxd, hexdump -C en od. De pagina vertelt wat ze heeft herkend en wat ze heeft verwijderd.
Automatische detectie controleert op een byte-order mark, welgevormde UTF-8, UTF-16, pure ASCII en daarna GBK, en vertelt welke regel de doorslag gaf. GBK wordt alleen gekozen als de bytes als gangbare Chinese tekens te lezen zijn, dus korte binaire frames worden gemeld als waarschijnlijk geen tekst in plaats van als onzinnig Chinees.
Dezelfde bytes worden getoond als UTF-8, GBK, UTF-16LE, UTF-16BE en ISO-8859-1, elk gemarkeerd als foutloos te decoderen of niet. Komt er onleesbare tekst uit, dan staat de juiste lezing meestal een rij lager.
NUL, CR, LF, ESC en andere stuurbytes worden getoond als ␀ ␍ ␊ ␛, zodat een afsluitende 00 of een ontbrekende 0D in protocoldata opvalt. Kopiëren levert nog steeds de echte tekens op.
Tekst → hex schrijft hex met spaties of compact, 0x-lijsten, \x-escapes, een C-array in de stijl van xxd -i, een Java-byte[] met signed waarden, een Python-bytesliteral die overeenkomt met repr(), een Go-[]byte of een xxd-dump — en de pagina kan elk van die formaten weer inlezen.
Inlezen en decoderen gebeuren lokaal in JavaScript. Niets wordt geüpload, opgeslagen of in de URL gezet, dus pakketcaptures en productielogs kun je gerust plakken.
bytes.fromhex(h).decode() bytes.fromhex('48 65 6c 6c 6f').decode('utf-8') geeft 'Hello'; spaties tussen bytes mogen, een 0x-prefix niet. De omgekeerde richting is s.encode('utf-8').hex(), of .hex(' ') voor uitvoer met spaties. Geef 'gbk' mee om Chinese tekst in GBK te decoderen of te encoderen.
Buffer.from(h, 'hex') Buffer.from(h, 'hex').toString('utf8') decodeert, Buffer.from(s, 'utf8').toString('hex') encodeert. Ongeldige invoer is geen fout: decoderen stopt bij het eerste foute paar en een overgebleven oneven cijfer valt weg, dus valideer eerst.
TextDecoder / TextEncoder Lees paren met parseInt(pair, 16) in een Uint8Array in en gebruik dan new TextDecoder('utf-8').decode(bytes). TextDecoder leest ook 'gbk', 'big5' en 'shift_jis', maar TextEncoder produceert alleen UTF-8.
HexFormat.of() new String(HexFormat.of().parseHex(h), StandardCharsets.UTF_8) decodeert en HexFormat.of().formatHex(s.getBytes(StandardCharsets.UTF_8)) encodeert. Op oudere versies formatteer je elke byte met String.format("%02x", b); vermijd Integer.toHexString(b), dat ffffffe4 afdrukt voor negatieve bytes.
encoding/hex hex.DecodeString(h) geeft de bytes terug en string(b) maakt er een string van; hex.EncodeToString([]byte(s)) doet het omgekeerde. Het pakket is streng: spaties geven invalid byte: U+0020 ' ' en een oneven lengte geeft odd length hex string.
sscanf with %2hhx Loop in stappen van twee cijfers door de string, lees ze in een unsigned char-buffer en voeg een afsluitende '\0' toe. Om hex af te drukken cast je naar unsigned char en gebruik je %02X; anders kunnen bytes boven 0x7F als FFFFFFE4 worden afgedrukt waar char signed is.
hex2bin() / bin2hex() hex2bin('48656c6c6f') geeft Hello en bin2hex('Hello') geeft 48656c6c6f. Volgens de handleiding geeft hex2bin() bij een oneven lengte of ongeldige invoer false terug, met een E_WARNING.
xxd -r -p / xxd -p echo 48656c6c6f | xxd -r -p drukt Hello af, en printf 'Hello' | xxd -p drukt 48656c6c6f af. Gebruik bij het encoderen printf in plaats van echo, want echo voegt een afsluitende newline toe, 0a.
Convert.FromHexString() Encoding.UTF8.GetString(Convert.FromHexString(h)) decodeert en Convert.ToHexString(Encoding.UTF8.GetBytes(s)) encodeert (hoofdletters, zonder scheidingstekens). FromHexString weigert spaties en een 0x-prefix. .NET Core en .NET 5+ bevatten geen GBK: roep eerst Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) aan en daarna Encoding.GetEncoding(936).
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
Hello, 世界
De eerste zeven bytes zijn gewone ASCII: 48 65 6C 6C 6F is Hello, 2C is een komma en 20 een spatie. E4 B8 96 en E7 95 8C zijn UTF-8-reeksen van drie bytes voor 世 en 界 — de meeste Chinese tekens nemen in UTF-8 drie bytes in beslag. Omdat elke reeks welgevormd is, leest automatische detectie het als UTF-8.
CE C2 B6 C8 3A 32 35 2E 33 A1 E6
温度:25.3℃
Veel seriële apparaten sturen Chinese tekst in GBK. Hier is CE C2 温 en B6 C8 度, 3A 32 35 2E 33 is de ASCII-tekst :25.3, en A1 E6 is het ℃-teken in volle breedte — twee bytes per Chinees teken of symbool. Als UTF-8 gelezen zijn de bytes ongeldig (CE begint een reeks van twee bytes, maar C2 is geen vervolgbyte); als GBK gelezen zijn het gangbare tekens, dus kiest automatische detectie GBK. Een converter die alleen UTF-8 kent, toont hier vervangingstekens.
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........
Hi 你好␍␊
Dit is precies wat printf 'Hi 你好\r\n' | xxd afdrukt. De offset 00000000: en de tekenkolom rechts worden vóór het decoderen verwijderd; zouden ze als data worden gelezen, dan leverden alleen de acht nullen al vier NUL-bytes aan het begin op. De laatste twee bytes, 0d 0a, zijn een Windows-regeleinde, getoond als ␍␊.
[-28, -72, -83, -26, -106, -121]
中文
Arrays.toString(bytes) drukt de signed bytes van Java decimaal af. Negatieve waarden zijn bytes van 0x80 en hoger: -28 is 256 − 28 = 228 = 0xE4. De zes bytes E4 B8 AD E6 96 87 zijn de UTF-8-codering van 中文.
AT+CSQ\r\n
41 54 2B 43 53 51 0D 0A
Modems en de meeste UART-commandosets verwachten dat elk commando eindigt op carriage return plus line feed. Een tekstvak geeft bij Enter alleen 0A, dus vink Regeleinden als CR LF aan en het regeleinde wordt 0D 0A.
653462646130653561356264
e4bda0e5a5bd → 你好
Elke byte hier is een ASCII-hexcijfer (65 is e, 34 is 4, 62 is b), dus de eerste decodering levert weer een hexstring op. Dat gebeurt als een hexstring als tekst wordt behandeld en nog een keer wordt omgezet. De pagina biedt een tweede ronde aan, die 你好 oplevert. Om loos alarm te voorkomen doet ze dat alleen als het eerste resultaat minstens 12 hexcijfers lang is en de tweede ronde echte tekst oplevert — datums, timestamps, CRC32-waarden en MD5-hashes activeren dit niet.
Plak hem in het vak op het tabblad Hex → tekst, in welke vorm je hem ook hebt: met spaties, compact, 0x-waarden, \x-escapes, een byte-array of een compleet xxd-scherm. De regel onder het vak vertelt hoe hij is gelezen.
De tekst verschijnt rechts, met de automatisch gedetecteerde codering en de reden daarvoor. Zit de gok ernaast, dan toont de tabel eronder elke lezing; kies de juiste in het menu Codering.
Stuurbytes zoals NUL, CR en LF worden getoond als ␀ ␍ ␊. Vink Onzichtbare tekens tonen uit voor de platte tekst en kopieer daarna het resultaat.
Kies op het tabblad Tekst → hex de codering en een uitvoerformaat — hex met spaties, 0x-waarden, een C-, Java-, Python- of Go-array, of een xxd-dump. Vink CR LF aan voor seriële protocollen en netwerkprotocollen.
Chinese tekst uit oudere Windows-software, veel seriële apparaten en legacy databases is GBK. Als je die als UTF-8 decodeert, mislukt dat of raakt de uitvoer vol vervangingstekens. Kijk in de coderingstabel en gebruik de lezing die klopt.
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte >>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好' charCodeAt() geeft een UTF-16-code-unit terug. Voor ASCII komt die toevallig overeen met de byte, dus de bug duikt pas op bij andere tekens, en dan is het resultaat niet wat een UTF-8-systeem verstuurt.
'你'.charCodeAt(0).toString(16) // '4f60' — a UTF-16 code unit
Buffer.from('你', 'utf8').toString('hex') // 'e4bda0' — the UTF-8 bytes byte is in Java signed, dus bytes vanaf 0x80 zijn negatief. Integer.toHexString() werkt op een int, drukt negatieve waarden af als unsigned 32-bit-hex en laat voorloopnullen weg.
Integer.toHexString(b) // "ffffffe4" for 0xE4, "a" for 0x0A
String.format("%02x", b) // "e4", "0a" Buffer.from(hex, 'hex') gooit nooit een fout. Het stopt bij het eerste paar dat geen geldige hex is en negeert een overgebleven oneven cijfer, dus een typefout levert een kortere buffer op in plaats van een foutmelding.
Buffer.from('486', 'hex') // <Buffer 48> — the 6 is silently dropped
Buffer.from('48zz65', 'hex') // <Buffer 48> — stops at zz if (!/^([0-9a-f]{2})*$/i.test(hex)) throw new Error('invalid hex');
Buffer.from(hex, 'hex'); Een converter die alleen spaties verwijdert, leest de offset 00000000: als data en de tekenkolom waar mogelijk als extra hex. Het resultaat begint met NUL-bytes en raakt vanaf daar steeds verder uit de pas. Gebruik xxd -p voor kale hex, of plak de dump hier, waar de kolommen worden herkend.
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........ → read naively: 00 00 00 00 48 69 20 e4 …
$ printf 'Hi 你好\r\n' | xxd -p 486920e4bda0e5a5bd0d0a
AT-modems en veel regelgebaseerde protocollen sluiten elk commando af met carriage return plus line feed. Een commando dat alleen op 0A eindigt, wordt vaak genegeerd, zonder enige foutmelding.
41 54 2B 43 53 51 0A AT+CSQ followed by LF only
41 54 2B 43 53 51 0D 0A AT+CSQ followed by CR LF
0D 0A of 00 aan het eind te zien — of werk andersom en bouw een commando met CR LF-regeleinden dat een apparaat accepteert.b'...'-literals en Node.js als <Buffer ...>. Plak het logfragment zoals het is om de tekst te zien, inclusief of het UTF-8 of GBK was.00 tot FF, en het aantal bytes is altijd de helft van het aantal cijfers. Hoofdletters en kleine letters betekenen hetzelfde. Scheidingstekens, prefixen en array-syntaxis zijn alleen notatie: 4865, 48 65, 0x48, 0x65 en \x48\x65 zijn dezelfde twee bytes.00 tot 7F toe. Afdrukbare tekens lopen van 20 (spatie) tot 7E (~); de rest zijn stuurtekens, waarvan 00 (NUL), 09 (tab), 0A (line feed), 0D (carriage return) en 1B (escape) het vaakst in echte data voorkomen. UTF-8, GBK en ISO-8859-1 behouden deze waarden allemaal, en daarom overleeft gewoon Engels bijna elke verkeerde codering.C2–DF voor twee bytes, E0–EF voor drie, F0–F4 voor vier — en elke volgende byte moet in 80–BF liggen. Door die strikte structuur is een GBK-zin bijna nooit geldige UTF-8 — in onze test met 33.910 Chinese zinnen gold dat voor 55 — en daarom vertrouwt automatische detectie op een foutloze UTF-8-decodering. Een los Chinees teken is een ander verhaal: ongeveer 18% van de GBK-tekens vormt toevallig een geldige UTF-8-reeks van twee bytes.81 tot FE, gevolgd door een tweede byte van 40 tot FE, met uitzondering van 7F. Omdat het bereik van die tweede byte zo breed is, laat korte UTF-8-tekst zich als GBK vaak zonder enige fout decoderen tot tekens die er niets mee te maken hebben — E4 BD A0 E5 A5 BD (你好) wordt 浣犲ソ — en daarom probeert deze pagina eerst UTF-8. GB18030 breidt GBK uit met reeksen van vier bytes voor zeldzamere tekens; de decodering hier accepteert die.41 00 — en UTF-16BE de hoge byte — 00 41. Windows-API's en veel bestanden gebruiken little-endian en kunnen beginnen met een byte-order mark, FF FE; UTF-8-bestanden beginnen soms met EF BB BF. Automatische detectie verwijdert een byte-order mark en meldt dat.getBytes(), encode(), een instelling van een seriële terminal, de charset van een databaseverbinding — stel je de codering expliciet in en noteer je die naast de hex, zodat de andere kant niet hoeft te raden.charCodeAt() in JavaScript of char-waarden in Java, leveren UTF-16-code-units op in plaats van geëncodeerde bytes. Encodeer de string eerst met TextEncoder, Buffer.from() of getBytes(StandardCharsets.UTF_8) en formatteer daarna de bytes.%02x of iets gelijkwaardigs, nooit een kale getal-naar-hexaanroep. a en 0a lijken in een log op elkaar, maar waarden zonder opvulling aan elkaar plakken levert een string met een oneven lengte op, of erger, een die naar andere bytes decodeert.00 tot FF, dus 48656c6c6f bestaat uit de vijf bytes 48, 65, 6C, 6C, 6F. Daarna decodeer je die bytes met een tekencodering. In ASCII en UTF-8 is 48 H, 65 e, 6C l en 6F o, samen Hello. Bij die tweede stap lopen de resultaten uiteen: bytes boven 7F staan in UTF-8, GBK en andere coderingen voor verschillende tekens. Daarom detecteert deze pagina de codering en toont ze alle lezingen naast elkaar. C4 E3 BA C3 is 你好 in GBK maar ongeldige UTF-8, en E4 BD A0 E5 A5 BD is 你好 in UTF-8 maar wordt als GBK gelezen 浣犲ソ. Kijk naar de coderingstabel onder het resultaat — de rij met zinnige tekst is de codering waarin de data is geschreven. Met maar één of twee tekens kan automatische detectie het niet altijd zeggen: D2 BB is geldige UTF-8 (һ) en ook GBK (一), dus controleer de GBK-regel die de pagina onder het resultaat toont. Twee andere oorzaken zijn het uitsluiten waard: een hexcijfer te veel of te weinig, waardoor elke volgende byte een halve byte verschuift, en een geplakte hexdump waar de offsetkolom nog aan vastzit. Heb je geen hex maar al onleesbare tekst (zoals 浣犲ソ), plak die tekst dan in de encoding converter. E4 BD A0 E5 A5 BD voor 你好 verschijnen als 浣犲ソ. Of de tekst bevat stuurbytes zoals 00 of 0D 0A, die verschijnen als vakjes of regeleinden. Plak de hex hier: de coderingstabel toont de UTF-8- en GBK-lezing naast elkaar, en stuurbytes verschijnen als ␀ ␍ ␊. 00 tot 7F: letters, cijfers, leestekens en stuurtekens. UTF-8 is zo opgebouwd dat precies die bytes dezelfde tekens betekenen, en gebruikt voor al het andere reeksen bytes vanaf 80 — 2 bytes voor Latijnse letters met accenten, 3 voor de meeste Chinese, Japanse en Koreaanse tekens, 4 voor emoji. Voor gewone Engelse tekst geven hex naar ASCII en hex naar UTF-8 dus identieke resultaten. Ze verschillen zodra een byte 80 of hoger is: een converter die alleen ASCII kent, kan die bytes niet als tekens tonen, terwijl UTF-8 ze decodeert naar het volledige bereik van Unicode. Wat elke byte van 00 tot 7F betekent, zie je in de ASCII-tabel. E4 BD A0. In GBK en GB2312 zijn het 2 bytes: 你 is C4 E3. In UTF-16 nemen tekens in het Basic Multilingual Plane 2 bytes in, en de bytevolgorde doet ertoe: 你 is 60 4F in UTF-16LE en 4F 60 in UTF-16BE. Zeldzame tekens buiten dat vlak nemen 4 bytes in UTF-8 in, 4 in UTF-16 (een surrogaatpaar) en 4 in GB18030. Wissel de codering op het tabblad Tekst → hex om het aantal bytes voor je eigen tekst te zien. bytes.fromhex() en decodeer daarna: bytes.fromhex('48656c6c6f').decode('utf-8') geeft 'Hello'. fromhex accepteert spaties tussen bytes, dus bytes.fromhex('48 65 6c 6c 6f') werkt ook, maar een 0x-prefix wijst het af met een ValueError. Decodeer GBK-data met 'gbk': bytes.fromhex('c4e3bac3').decode('gbk') geeft '你好', terwijl dezelfde bytes als UTF-8 decoderen een UnicodeDecodeError oplevert. De omgekeerde richting is '你好'.encode('utf-8').hex(), dat 'e4bda0e5a5bd' teruggeeft; geef een scheidingsteken mee, zoals .hex(' '), voor uitvoer met spaties. Buffer.from('48656c6c6f', 'hex').toString('utf8') de waarde 'Hello' terug. Let op bij foute invoer: Node gooit geen fout — het stopt bij het eerste ongeldige paar en laat een overgebleven oneven cijfer stilletjes vallen, dus Buffer.from('486', 'hex') is een buffer van één byte. In de browser bouw je de bytes zelf op en gebruik je TextDecoder, dat ook GBK leest: new TextDecoder('gbk').decode(Uint8Array.from('c4e3bac3'.match(/../g), h => parseInt(h, 16))) geeft '你好'. Gebruik geen charCodeAt() om bytes te krijgen: '你'.charCodeAt(0).toString(16) is '4f60', een UTF-16-code-unit, niet de UTF-8-bytes e4bda0. unsigned char-buffer en sluit die daarna af: for (size_t i = 0; i < n; i++) sscanf(hex + 2 * i, "%2hhx", &buf[i]); buf[n] = '\0';, waarbij n gelijk is aan strlen(hex) / 2. Met hex ingesteld op 48656c6c6f2c20e4b896e7958c geeft het afdrukken van buf Hello, 世界 op een UTF-8-terminal. Voor de andere richting druk je elke byte af met printf("%02X ", (unsigned char)s[i]). De cast is belangrijk: op platforms waar char signed is, zou een byte als 0xE4 anders met tekenuitbreiding als FFFFFFE4 worden afgedrukt. In C++ voeg je elk paar toe met s.push_back(static_cast<char>(std::stoi(hex.substr(i, 2), nullptr, 16))); dezelfde hex geeft Hello, 世界. new String(HexFormat.of().parseHex(hex), StandardCharsets.UTF_8); gebruik voor GBK-data in plaats daarvan Charset.forName("GBK"). In de andere richting is ffffffe4 de klassieke verrassing. Die ontstaat omdat byte in Java signed is en Integer.toHexString() een int verwacht. De byte 0xE4 wordt opgeslagen als -28; bij de verbreding naar int blijft de waarde -28, en toHexString drukt negatieve getallen af als de unsigned 32-bitwaarde, ffffffe4. Dezelfde methode laat ook voorloopnullen weg, dus 0x0A wordt a. Gebruik String.format("%02x", b), dat een negatieve byte als unsigned 8-bitwaarde formatteert, of Integer.toHexString(b & 0xff) met opvulling. Vanaf Java 17 zet HexFormat.of().formatHex(bytes) een hele array om, en HexFormat.of().parseHex(hex) doet het omgekeerde. hex2bin() decodeert een hexstring naar een binaire string, en bin2hex() doet het omgekeerde: bin2hex('Hello') geeft 48656c6c6f. Volgens de PHP-handleiding geeft hex2bin() false terug en een E_WARNING als de invoer een oneven lengte heeft of geen geldige hexadecimale waarde is, dus haal spaties en 0x-prefixen weg voordat je de functie aanroept. PHP-strings zijn bytes, dus het resultaat heeft de codering die de oorspronkelijke tekst had — zet GBK-uitvoer om met mb_convert_encoding() als je pagina UTF-8 gebruikt. xxd (ook met -u, -c en -g), hexdump -C, hex.Dump van Go, od -A x -t x1 en GNU od -t x1z, en vouwt de *-regel uit die hexdump en od afdrukken in plaats van herhaalde rijen. Ook gewone hexdump en od -x worden ondersteund; die drukken 16-bitwoorden af in plaats van bytes: op een little-endian machine worden de bytes 48 69 afgedrukt als 6948, dus draait de pagina elk paar weer om en gebruikt ze de laatste offset om de opvulbyte te laten vallen die bij data van oneven lengte wordt toegevoegd. Elke variant van xxd, hexdump en od is getest met 600 echte dumps van willekeurige data. a in plaats van 0a), een teken dat bij het kopiëren is weggevallen, of een verdwaalde letter zoals O in plaats van 0. Een hexstring die ontstaat door alle bytes als één groot getal om te zetten, zoals met hex(int.from_bytes(data, 'big')) in Python, verliest de nul aan het begin: \r\n wordt 0xd0a. De pagina raadt niet welk cijfer ontbreekt, want verkeerd raden verschuift elke volgende byte een halve byte en levert overtuigende onzin op. In plaats daarvan biedt ze twee oplossingen die je met één klik toepast — een 0 vooraan toevoegen of het laatste cijfer verwijderen — zodat je de resultaten kunt vergelijken. Waarden die afzonderlijk met een prefix zijn geschreven, zoals 0x0 0xa, zijn geen probleem: elke waarde wordt als hele byte gelezen. Encodering en formattering
De volledige ASCII-tabel: 128 tekens in decimaal, hex, octaal en binair, plus een converter die beide kanten op werkt. Stuurtekens met escape-sequenties, caret-notatie en de plek waar je ze echt tegenkomt.
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
Encodering en formattering
Decodeer een Base64-string of data-URI terug naar een afbeelding in je browser. Bekijk voorbeeld, lees afmetingen & MIME, download als PNG, JPG, GIF, SVG. Geen upload.
Encodering en formattering
Zet CSV om naar JSON in uw browser. RFC 4180, type-afleiding, headerregel, big-int veilig. 100% privé, geen upload.
Encodering en formattering
Plak verminkte tekst en krijg het origineel terug. Elke plausibele coderingsketen — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — wordt geprobeerd en gerangschikt, met de keten erbij. Gratis: alles draait in je browser.
Encodering en formattering
Plak een .env-bestand, krijg direct JSON. Je wachtwoorden, API-sleutels en tokens verlaten nooit je browser — 100% privé, gratis dotenv-parser.