ton-deep-doc
ton-deep-doc copied to clipboard
Что такое TL: Кодирование bytes в TL: ошибка в кодирование массива размером 396
https://github.com/xssnick/ton-deep-doc/blob/master/TL.md#%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-bytes-%D0%B2-tl
[0xFE, 0x8C, 0x01, 0x00, байты массива] дает нам: [254, 140, 1, 0, данные массива]. 254 + 140 + 1 = 395 != 396 необходимо заменить 0x01 на 0x02 или 0x8C на 0x8D
Поправьте, если я чего-то не понимаю
254 (0xFE) не является частью длины, а лишь служит индикатором что следующие 3 байта это длина.
0x01 это второй байт в big endian, каждая единица в нем идет за 256, получается 256+140=396
Нашел хорошую статью по теме, подходит для совсем новичков: https://habr.com/ru/articles/233245/
Все равно не понимаю, как компьютер понимает, что длина "массива длины" равна 3
И разве в таком случае это не Little endian? 140 * 2^0 + 1 * 2^8 + 0 ^ 2 ^16 (от младшего к старшему)