About RadixDesk

RadixDesk is a set of browser-only tools for the ways computers write numbers and text: positional number bases, hexadecimal and byte order, two's complement integers, IEEE 754 floating point, ASCII and UTF-8, and bitwise operators.

Why it exists

These topics look simple and fail in confusing ways. 0.1 has no finite binary form, so 0.1 + 0.2 is not 0.3. The same eight bits are 255 or -1 depending on the type. 1 << 32 is 1 in JavaScript. 16777217 becomes 16777216 in a 32-bit float. The bytes C0 AF are not valid UTF-8, and é can be two different byte sequences. RadixDesk does the conversion and then shows the working for your own input: the divisions, the bit fields, the exact stored value, the byte-by-byte decoding. Each page lists real inputs that go wrong, with the exact output, and cites the document behind each rule.

What is on the site

Everything runs in your browser

The converters are TypeScript running on your device, using arbitrary-size integers (BigInt) so that large values are exact. What you type or paste is not sent to a server. Pages are static files; there is no back end that receives your input. The details, including the one setting key the site stores in your browser's local storage, are in the Privacy Policy.

How the results were checked

  • Hand-derived expectations. Expected values in the tests were worked out on paper first (division remainders for base conversion, bit groups for UTF-8 from the RFC 3629 templates, field layouts for IEEE 754) and only then compared with the code, so a bug in the code cannot quietly become the expected answer.
  • Independent implementations. The tests compare the engines with the platform's own on thousands of random inputs: base conversion against BigInt and Number.prototype.toString; float encoding and decoding against DataView, Float32Array and Float64Array; the UTF-8 encoder and decoder against TextEncoder and TextDecoder; the bitwise engine against JavaScript's operators and BigInt.asIntN.
  • Published examples. The UTF-8 decoder is run against the replacement examples printed in the Unicode Standard (Tables 3-8 to 3-11).
  • Every example on a page is a test. The inputs and outputs shown under "Worked examples" and "What goes wrong" are recomputed by the same engine in an automated test, so a page cannot show a value the tool would not print.
  • Real browser test. The built site was loaded in headless Chrome and each tool was run with a known input, because tests of the code alone cannot show a button that is not wired up.

Where it is unsure

Each page has a section on limits. The IEEE 754 standard itself is sold, not free, and was not read; the floating-point pages cite Wikipedia, Goldberg's paper and the ECMAScript specification instead and say so. Behaviour that comes from observing software rather than from a specification is labelled as observed. Every page ends with the documents it relied on, with links and the date they were read. If a result disagrees with your own software, please tell us with the input, the options and what you saw; that is the most useful kind of correction.

Who runs it

RadixDesk, an independent project operated from Indonesia. You can reach us by email at joe@zona13.net.

Cost and advertising

The site is free. It currently shows no advertising, uses no analytics and sets no cookies. If any of that ever changes, the Privacy Policy and this page will be updated before it does.

What it is not

It is not a certified calculation tool, and it is not a substitute for testing your own code. Languages and compilers differ from the idealised results shown on some pages (C leaves some shifts and signed overflow undefined, for example). Treat the output as a well-checked second opinion and see the terms and disclaimer.