0 based indexing of course, so what’s the joke? oh, mixing up count and max index is a hardship you get over after a couple of years, but it comes back sometimes.
it’s not just zero-based indexing though. i’ve had situations like these a couple of times: write a for ... of loop to iterate through the elements of an iterable. a lot of the times, there’s an unwanted first / last element in the list (that doesn’t actually belong there) and i forget to remove it, then end up with garbage data in the result set.
The more you move through the networking stack, the more you start seeing OB1 error potentials.
Many protocols have packet ids starting from (and wrapping back to) 1. Modbus registers start from 1, but stored in memory offset 0.
Packet lengths can either include or exclude the length itself. E.g. packet length 200 in a protocol could either mean the length is followed by 200 bytes of data; or 1 byte containing the length + 199 data; or even 4 bytes length + 196 data (off by four!)
0 based indexing of course, so what’s the joke? oh, mixing up count and max index is a hardship you get over after a couple of years, but it comes back sometimes.
it’s not just zero-based indexing though. i’ve had situations like these a couple of times: write a
for ... ofloop to iterate through the elements of an iterable. a lot of the times, there’s an unwanted first / last element in the list (that doesn’t actually belong there) and i forget to remove it, then end up with garbage data in the result set.The more you move through the networking stack, the more you start seeing OB1 error potentials.
Many protocols have packet ids starting from (and wrapping back to) 1. Modbus registers start from 1, but stored in memory offset 0.
Packet lengths can either include or exclude the length itself. E.g. packet length 200 in a protocol could either mean the length is followed by 200 bytes of data; or 1 byte containing the length + 199 data; or even 4 bytes length + 196 data (off by four!)
It’s a wild world out there.