All operations

Decimal bytes

Each byte as a number from 0 to 255.

What it does

One number per byte, written in base ten and separated by spaces. Decoding accepts spaces, newlines or commas between the values, so a character-code array pasted out of source needs only its brackets stripped. Anything that is not a whole number from 0 to 255 stops the operation and gets named in the error, because quietly skipping a bad value would hand back bytes that look plausible and are wrong.

That check runs on the parsed number rather than the text, so hex and exponent spellings slip through: 0x41 decodes to the same byte as 65.

One character, two numbers

This reads bytes, and text becomes bytes as UTF-8. The é in the example above comes out as 195 169. Its code point is 233, a different number entirely, and Unicode code points is the view that shows it.

Anything above U+007F costs two, three or four numbers here. That is the one thing to keep straight when reading a decimal dump of text that is not plain ASCII.

Where it turns up

Decimal byte lists appear wherever a string had to be kept out of a search. String.fromCharCode(97,108,101,114,116) spells alert, and it is still the first move in obfuscated JavaScript. Office macros assemble their strings a character at a time from Chr() calls for the same reason, which is why olevba flags the function on sight. Puzzle text arrives as a run of bare numbers often enough to be worth trying early.

Hexadecimal is the same data in base 16 at a fixed two characters per byte, which is why tools print that instead. Binary drops one level further down, to the bits themselves.