Out of curiosity, I was wondering how you guys handled unsigned values when using sockets.
The way I imagine handling unsigned values is using bitwise/shift operators (since these "disregard" sign), but that can be quite cumbersome when it comes to things like multiplication/division/modulo operators (add/subtract are very easy to do, not sure on their performance compared to regular add/subtract).
The other alternative I considered was using the "next size up" method, where you use a data type that's larger than the one you actually want. This means, though, that I'd have to check the bounds every time when using these.