Age 32
Seen June 5th, 2021
Posted February 8th, 2019
416 posts
8.5 Years
byte 0
80 heals infatuation
40 forces to apply to first pokemon (no selection)
20 is dire-hit (up to 30)
1-f is increase attack battle stat by the given value
byte 1
1-f is increase speed battle stat by given value
10-f0 is increase defence, in the same manner
byte 2
1-f is increase special attack (note: x special raises only special attack)
10-f0 is increase accuracy
byte 3
80 is guard-spec 
40 for level up
20 for clear sleep
10 for clear poison
8 for clear burn
4 for clear ice
2 for clear paralyze
1 for clear confusion
byte 4
1 is up HP EV
2 is up Attack EV
4 means heal HP
8 means heal PP
10 means only to selected attack (select made by GUI choice)
20 means increase max PP
40 means revive and heal
80 means it's an evolution stone
when 40 and 4 are set, item only heals fainted pokemon
4 and 8 are mutually exclusive, you cannot heal PP and HP at the same time. 4 takes precedence over 8. 
byte 5
0x80 is the change happiness when 200+
0x40 is the change happiness when 100-->199
0x20 is the change happiness when -99
0x10 is the increase PP to max on selected attack
0x08 special defense ev up
0x04 special attack ev up
0x02 speed ev up
0x01 defense ev up
byte 6 
recovery value for Potion-like items,
increase in EV for EV-increasing items.
PP restoring items have a maximum of 7f
For health restoration, ff means max health, fe means half max health, fd is used by rare candy (only increase with level up)
byte 7
happiness increase/decrease for happiness on the range of 0-99
byte 8
happiness increase/decrease for happiness on the range of 100-199
byte 9
happiness increase/decrease for happiness on the range of 200-255
bytes 7 to 9 are signed bytes, meaning that FF = decrease of 1 happiness
I just wanted to point out that these are bit fields...

Its not if byte 0 has a value of 80, its if bit 0 of byte 0 is 1 (or on, or true or however you wanna say it)...

I'm sure this is understood by most, but some may have missed it...

ALSO, if byte 6 is not needed, it is not present, byte 7 becomes byte 6, and so on. Same with bytes 7 8 and 9. they are all not required and only the needed ones are placed at the end of the first 0-5 bytes (in the described order).
SOOO if you are programaticly checking which items increase happiness, keep in mind that many times byte 6 will be the 0-99 happiness byte.