I'm having some difficulty reversing the following functions done before storing data to a device.

```
ss = enum + 16
u32ts = number << 8
u32timestamp = ss+u32ts
```

`enum`

and `number`

are the two vaules I'm trying to get back but I'm unawaire of what either of them are when I start with `u32timestamp`

.

What I have tried to do is

```
uint temp = u32timestamp;
number = 0;
if (u32timestamp > 100)
{
number = (u32timestamp >> 8 & 8 );
temp = u32timestamp - number ;
}
enum = temp - 16;
```

But I keep getting out the incorrect values. Please help me fix this. `enum`

is always between 16 and 21 but `number`

can be positive any value.