Нет, вы используете один и тот же код на обеих архитектурах. Когда вы делаете это таким образом, важен формат данных с прямым порядком, а не порядок вашего процессора.
Порядковый номер RTP сохраняется с первым старшим байтом и последним младшим байтом в соответствии со спецификацией протокола. Таким образом, если порядковый номер 0x1234 (или 4660 десятичных), он будет сохранен в ваших 2 байтах packet[2]
и packet[3]
как
packet byte 0 1 2 3
+---+---+---+---+
|...|...|12 |34 |
+---+---+---+---+
Теперь вы хотите извлечь байт 2 и поместить его как старший значащий байт в целое число, а байт 3 - как младший значащий, который представляет собой просто код:
uint16_t seq = (packet[2] << 8) | packet[3];
Это делает seq
значение 0x1234 (или десятичное значение 4660) независимым от порядкового номера вашего процессора.