Почему три шестнадцатеричные
Потому что автор решил использовать шестнадцатеричный. Как видите, 0x20 в шестнадцатеричном формате является довольно «круглым», поскольку он имеет только один ненулевой di git.
Могу ли я использовать восьмеричное значение?
Да. Везде, где вы можете использовать целочисленный литерал, вы можете использовать любое из доступных базовых представлений. Возможные варианты: двоичное, десятичное, восьмеричное и шестнадцатеричное.
PS Этот пример технически нарушен в стандартном C ++, потому что не удается выровнять буфер, поэтому это не лучший пример для изучения языка. Мне кажется, что он написан специально для процессоров x86, которые действительно работают с невыровненными операциями.
Правильный способ написать это - использовать массив целых чисел, скопировать значения, а затем заново интерпретировать результат как символы при чтении.