Pronouncing the hexadecimal letters A through F
The default pronunciation for the letters are simply their English names, "ay, bee, see, dee, ee, eff."
When reading off a hex MAC address, I have both used and heard the NATO phonetic alphabet used for the letters A through F. Since both the speaker and the listener know that a hex string is coming, they will pronounce
as "One alpha, four eight, zero foxtrot, charlie foxtrot, three bravo, two four."
With hexadecimal numbers, I have also heard a somewhat simplified phonetic alphabet.
B=Baker (or Boy)
So the above string would be pronounced "One abel, four eight, zero fox, charlie fox, three baker, two four."
Last week, I provisioned a modem and had to pronounce the MAC address of said device. I'm a AE speaker and the hearer was Filipino. I pronounced the address using the simplified phonetic alphabet, and he confirmed the address using the NATO phonetic alphabet.
There are other spelling alphabets used around the world but the NATO phonetic alphabet is the most common.
Pronouncing individual digits versus pronouncing as if they comprised a decimal number
When I have taught computer science classes, I would always pronounce a binary number like
1010 as "one oh one oh, base 2." To pronounce it as if it were a decimal number, "one thousand and ten" seemed to invite confusion. Thus, I would never pronounce 102 as "ten, base two" or "ten, binary."
This professor, who teaches cryptography and algorithms, uses a similar convention.
If decimal, just say the number (with the word "decimal" if we're mixing contexts)
If any other base, read the digits and say the name of the base
So I might say, "therefore the answer is one-zero-one binary, or 5 decimal."
I would never call 10 hex "ten". Nor would I call 10 binary "two."
Said professor pronounces, "one zero one," while I might shorten and say "one oh one."
(And please click through to the picture of the T-shirt. It's only funny if you misread "one zero base 2" as "ten.")
One HBO Silicon Valley episode
I taught Computer Science back in the day when mighty dinosaurs ruled the earth, punch cards were on the wane, and floppy disks were still floppy.
Acknowledging that language evolves, here is a link to a blog entitled "How to pronounce hexadecimal", dated 2015. The blog author is Bzarg.
It includes a dialogue from an HBO series, Silicon Valley:
Kid: Here it is: Bit… soup. It’s like alphabet soup, BUT… it’s ones and zeros instead of letters.
Kid: ‘Cause it’s binary? You know, binary’s just ones and zeroes.
Bachman: Yeah, I know what binary is. Jesus Christ, I memorized the hexadecimal times tables when I was fourteen writing machine code. Okay? Ask me what nine times F is. It’s fleventy-five. I don’t need you to tell me what binary is.
Bzarg goes on to propose a pronunciation convention.
For the hex digits in the units place, pronounce the usual 0-9 and "ay, bee, see, dee, ee, eff."
For the hex digits in the sixteen's place, the author proposes these (based on "fleventy"): "atta, bibbity, city, dickety, ebbity, fleventy."
For four hex digits, Bzarg suggests separating each two digits by "bitey."
So the MAC address above might be:
1A-48 = "abteen bitey forty-eight"
0F-CF = "eff bitey city-eff"
3B-24 = "thirty-bee bitey twenty-four"
Despite Bzarg's heroic efforts (and an echo from http://www.xanthir.com/b4ej0), I have not observed this in practice, even once.
How to pronounce your examples
I think your examples depend on whether you are doing math or doing programming.
In math, numbers in other bases are written with the base following as a subscript. (Please see https://math.stackexchange.com/a/638782/5220 for 11002 = C16.) Math also routinely talks about logarithms in base 2, base 10, or natural logarithms like this (with the base following the log as a subscript):
log2 (pronounced "log base 2")
log10 (pronounced "log base 10")
ln (pronounced "log")
So I would pronounce your numbers in a math context as:
- 102, pronounced "one zero base two"
- 108, pronounced "one zero base eight"
- 1016, pronounced "one zero base sixteen"
- 1F16, pronounced "one eff base sixteen"
In programming, there is a convention that literals in other bases are preceded with a
0x for binary, octal, or hexadecimal, respectively. (See this proposal for Python "Integer Literal Support and Syntax" at https://www.python.org/dev/peps/pep-3127/).
The proposal is that:
octal literals must now be specified with a leading "0o" or "0O" instead of "0";
binary literals are now supported via a leading "0b" or "0B"; and
provision will be made for binary numbers in string formatting.
(Python, C, C++, and Java already precede hexadecimal literals with "0x").
Their motivation was:
The default octal representation of integers is silently confusing to people unfamiliar with C-like languages. It is extremely easy to inadvertently create an integer object with the wrong value, because '013' means 'decimal 11', not 'decimal 13', to the Python language itself, which is not the meaning that most humans would assign to this literal.
(Note the Pythonic displeasure with the C and C++ convention that writes an 138 as
So with this in mind, if you were pronouncing your examples in a programming context, the literal is preceded by a base marker and the pronunciation follows suit:
- 102, written
0b10, pronounced "binary one zero" or "binary one oh"
- 108, written
0o10 in Python or
010 in C++, pronounced "octal one zero"
- 1016, written
0x10, pronounced "hex one zero"
- 1F16, written
0x1F, pronounced "hex one foxtrot" or "hex one eff" or "hex one fox"