A few months back, <bzarg.com> posted a guide on how to pronounce hex numbers, inspired by a funny scene from Silicon Valley. I love their idea, but I don't actually like the names they came up with - they're really inconsistent in annoying, unnecessary ways.
The basics of any English-like number-naming system are:
- Digit names.
- "Teen" names, for numbers of the form 1x.
- "Xty" names, for numbers of the form x0.
- Place names, for grouping larger sets of numbers, like "hundred", "thousand", and "million".
When hex numbers are composed of just decimal digits, #1-#3 are identical to decimal numbers. "45" is still read as "forty five". Similarly, if a "letter" digit shows up in the ones place, it's just read as the letter - "4B" is "forty bee". (The full set of English spellings is "ae", "bee", "cee", "dee", "ee", and "eff".)
X0 (tens) names
The Silicon Valley clip provided an example for #3 - "fleventy", presumably for Fx numbers. Here's my full set of six:
- A0: atta
- B0: bitta
- C0: citta (pronounced "sitta")
- D0: dickety
- E0: eckity
- F0: fleventy
So a number like "f5" is read as "fleventy five", or "BC" as "bitty cee".
The sound pattern here only changes to make b/a more distinct from d/e, and because f's name is already established in the lore, and is pretty fun to say. ^_^ Note that they're reasonably distinct from the existing decimal "tens", too - in particular, 80 (eighty) and A0 (atta) sound fairly different, which is easy to mess up if you're not careful.
1X (teens) names
We can extrapolate these down into teen names, too:
- 1A: abteen
- 1B: bibteen
- 1C: cibteen (pronounced "sibteen")
- 1D: dibbleteen
- 1E: ebbleteen
- 1F: fleventeen
These follow similar patterns, with A-C using one naming scheme (consistently swapping "tta" with "bteen") and D-E using another (swapping "ckity" with "bbleteen").
1A-1E also have the nice advantage that they're noticeably distinct from the A0-E0 names due to them swapping in a voiced consonant, which isn't true of most decimal digits (most of 13-19 sound really similar to 30-90). This only isn't true for fleventy/fleventeen, because I don't have a good answer for it, but at least it's no worse its seventy/seventeen namesake.
Larger place names
The Bzarg naming tool suggests "bitey" as the name for the third digit place, so "100" is "one bitey" (because two hex digits make a byte), then use "halfy" and "worddion" (dd pronounced as a soft "j") for 4 and 8 digits (inspired by 2 bytes being a half-word and 4 bytes being a word). The naming tool reuses "bitey" for 6 digits, which I assume is just an oversight/mistake, as it would be confusing.
I'm not a fan of this - the size of a "word" changes over time anyway (it used to be 2 bytes, now it's 8 bytes on some systems), and it doesn't go any further. Here's a much simpler system that extends as far as our decimal system does. (Or, technically, much further, since decimal names things by how many groups of 1k there are, while this groups them by 16^4, or ~65k)
- Use "bitey" for 16^2. So, 0xABCD is "atta bee bitey citta dee".
- If you need to go higher, group into 4 digits, and use "millby", "billby", etc at the end of each group, same as the decimal system with thousand/million/billion/etc. So, 0x1234_5678 is "twelve bitey thirty four millby, fifty six bitey seventy eight".