Для начинающих: этот тип функции абсолютно бесполезен: на машине, где sizeof(int)
равно 4, существует 24 возможных порядка байтов.Большинство, конечно, не имеет смысла, но я видел по крайней мере три.И порядковый номер не единственное, что влияет на целочисленное представление.Если у вас есть int
, и вы хотите получить младшие 8 бит, используйте intValue &
0xFF
, для следующих 8 бит, (intValue >> 8) & 0xFF
.
Что касается вашего точного вопроса: я предполагаю, чтовы описываете как «похоже на это» то, что вы видите в отладчике, когда вы ломаетесь при возврате.В этом случае numPtr
является char*
(unsigned char
const*
имело бы больше смысла), поэтому отладчик принимает строку в стиле C.0x7fffffffe6ee
является адресом;то, что следует, - это то, что компилятор видит как строку стиля C, которую он отображает как строку, то есть "..."
.Предположительно, ваша платформа является традиционным прямым порядком байтов (Intel);указатель на строку стиля C видит последовательность (числовые значения) 1, 0
.0
является, конечно, эквивалентом '\0'
, поэтому он считает, что это строка из одного символа, причем этот один символ имеет кодировку 1. Не существует печатного символа с кодировкой, равной единице, и он не соответствуетк любой из нормальных escape-последовательностей (например, '\n'
, '\t'
и т. д.).Таким образом, отладчик выводит его, используя восьмеричную escape-последовательность, '\'
, за которой следуют от 1 до 3 восьмеричных цифр.(Традиционный '\0'
является лишь частным случаем этого; '\'
, за которым следует одна восьмеричная цифра.) И он выводит 3 цифры, потому что (вероятно) он не хочет смотреть в будущее, чтобы гарантировать, что следующий символне восьмеричная цифра.(Если бы последовательность состояла из двух байтов 1, 49
, например, 49 равняется '1'
в обычных кодировках, и если он выдает только один байт для восьмеричного кодирования 1, результатом будет "\ 11", чтоэто строка из одного символа, соответствующая в обычных кодировках '\t'
.) Таким образом, вы получите "
это строка, \001
с первым символом, имеющим кодировку 1 (и не отображаемое представление), и "
это конец строки.