kaitai_struct_formats
kaitai_struct_formats copied to clipboard
vlq_base128_le incorrectrly compiled in C#
Hi.
Source file: common/vlq_base128_le.ksy
Look in screenshot below, it is source file compiled for C#. Since by default csharp uses Int32 type, shifts by '35', '42', '49' computes incorrectly.
Possible workaround to cast values to u8
in vlq_base128_le.ksy
:
value:
value: >-
(groups[0].value.as<u8>
+ (len >= 2 ? (groups[1].value.as<u8> << 7) : 0)
+ (len >= 3 ? (groups[2].value.as<u8> << 14) : 0)
+ (len >= 4 ? (groups[3].value.as<u8> << 21) : 0)
+ (len >= 5 ? (groups[4].value.as<u8> << 28) : 0)
+ (len >= 6 ? (groups[5].value.as<u8> << 35) : 0)
+ (len >= 7 ? (groups[6].value.as<u8> << 42) : 0)
+ (len >= 8 ? (groups[7].value.as<u8> << 49) : 0)).as<u8>