Keep integer values exact and signedness explicit
A base changes the way a value is written, not the value itself. Decimal 255, binary 11111111, octal 377 and hexadecimal FF describe the same nonnegative integer. Positional notation assigns a power of the base to each digit. Reading left to right, you can build the value by multiplying the current total by the base and adding the next digit.
Large values deserve special care. Ordinary JavaScript floating-point numbers cannot represent every integer above 9,007,199,254,740,991 exactly. This converter accumulates digits using integer arithmetic, so an identifier such as 9,007,199,254,740,993 retains its final digit. Input limits still apply to keep the workspace responsive; exact arithmetic does not mean unlimited input size.
Signed bit patterns need a width. In eight-bit two’s complement, FF represents minus one; in sixteen bits, 00FF represents positive 255. Decimal input in this mode is interpreted as the signed value to encode. Input from the other bases is interpreted as a nonnegative bit pattern. The converter rejects overflow rather than silently discarding high bits, and shows the interpretation of the first valid row.
Use one integer per line when converting a list. Blank lines are skipped but their line positions remain reflected in the results. Invalid rows carry an explanation while valid rows stay available. This tool intentionally excludes fractional numbers, scientific notation and byte-to-text decoding. Those tasks involve different rules. For a message encoded in binary or hex bytes, follow the related text translator instead.