# c get nth byte of integer

For the (n+1)th byte in whatever order they appear in memory (which is also least- to most- significant on little-endian machines like x86):

```
int x = ((unsigned char *)(&number))[n];
```

For the (n+1)th byte from least to most significant on big-endian machines:

```
int x = ((unsigned char *)(&number))[sizeof(int) - 1 - n];
```

For the (n+1)th byte from least to most significant (any endian):

```
int x = ((unsigned int)number >> (n << 3)) & 0xff;
```

Of course, these all assume that `n`

< `sizeof(int)`

, and that `number`

is an `int`

.

```
int x = (number >> (8*n)) & 0xff;
```

where n is 0 for the first byte, 1 for the second byte, etc.

`int nth = (number >> (n * 8)) & 0xFF;`

Carry it into the lowest byte and take it in the "familiar" manner.