Handling bytes
When designing your own protocol or using existing ones, you have to be able to comfortably move around and manipulate binary buffers. Luckily, the extended standard library ecosystem provides the byteorder
crate to fulfill all your binary needs with various bits and pieces of reading and writing functionality.
Getting ready
In this chapter, we are going to talk about endianness. It is a way of describing how the values in a buffer are ordered. There are two ways to order them:
- Put the smallest one first (Little Endian)
- Put the biggest one first (Big Endian)
Let's try an example. Suppose we wanted to save the hexadecimal value 0x90AB12CD
. We first have to split it into bits of 0x90
, 0xAB
, 0x12
, and 0xCD
. We now can either store them with the biggest value first (Big Endian), 0x90 - 0xAB - 0x12 - 0xCD
, or we could write the smallest number first (Little Endian), 0xCD - 0x12 - 0xAB - 0x90
.
As you can see, it's the exact same set of values, but flipped. If this short explanation left...