Мне было интересно, почему вам приходилось менять местами байты в Trift CompactProtocol при кодировании целых чисел с переменной длиной.
Example taken from Приложения, интенсивно использующие данные (онлайн, стр. 120):
Number in Base 10 to be encoded: 1337
1337 in Base 2: 0010100 111001
Encoding first byte: 1|111011|0
Encoding second byte: 0|0010100
Как видите, байты поменялись местами. Почему это?
Дополнительная информация: Первый бит в первом байте означает, что впереди еще один байт. Последний бит в первом байте представляет знак (в данном случае положительный). Первый бит в последнем знаке означает, что больше нет дополнительных байтов, принадлежащих этому числу.