hexedit filename -l 16 is not valid and results in a usage exit, but hexedit -l 16 filename is valid. I can see in the manpage and usage printout as well that the program expects the filename to come last, and it doesn't have to be this way.
I'll see if I can't fix these issues myself. I'd frankly like to rewrite the whole arg parser loop (no disrespect), but let's address one thing at a time.