Question: There is dozens of places discussing how to do different kinds of byteswapping, but I couldn't easily find a place explaining the concept and some typical examples of how the need to byteswap occurs.

So here is the question: *what is byteswapping and why/when do I need to do it?*

If examples are a good way to explain, I would be happy if they where in standard C++. Book references are appreciated, preferentially to Lippman's or Pratas C++ primers since those are the one I have available.

Answer: 
If I understand your question correctly, you're talking about `big endian` to `little endian` conversion and back.

That occurs because some microprocessors use `little endian` format to refer to memory, while others use `big endian` format.

The bytestreams on the internet are for example, `big endian` while your intel CPU works with `little endian` format.

Hence to translate from network to CPU or CPU to network, we need a conversion mechanism called byteswapping.

OSes provide `ntohl()` and `htonl()` functions for doing this.
As mentioned in the comments, byteswapping is the process of changing a values [endianess](http://en.wikipedia.org/wiki/Endianness) from one to another. Lets say you have a value in your memory (left address is lowest):

```
DE AD BE EF   <- big endian

```

This valu econsists of 4 bytes - in hexadecimal representation two digits are one byte.

If we now assume that the above value is encoded in big endian, then this would mean that the lowest order byte if the very first byte in memory - here the `DE`. The Intel x86 processor architecture works with little endian, that means the same value as above would look like this in memory:

```
FE BE AD DE   <- little endian

```

These two values represent the same value, but have a different endianess.