Both start/end and start/length are common pattern and when you mix them accidentally, people usually find out quickly, that means changing more code, so I don't understand why you want to to that. It also means slightly more complicated code for the user. 

The [start...end[  pattern leads to the simplest client code.