Many people will have to hex edit at some point in their wow dev experience. Though, i imagine few people actually know what they are doing. This is just a very brief informative piece to encourage people to start understanding essentially what it is and perhaps look into it more to help this great wowmodding community!
First off here is some keywords that you will need to know:
- BINARY: simple enough..
- BIT: A single binary digit. 0 or 1
- BYTE: 8 bits, possibly the most commonly used unit?
- NIBBLE: 4 bites
- WORDS: Binary data is stored in memory as groups of bits, each group occupies a single 'address'. The length of a word is fixed for a given computer and values typically range from 16 (WORD) to 64bits (Q(uad)WORDs). (64bit ftw..)
Right, so after a few key words we can start getting into things..
A computer is actually a lot more stupid then you can imagine. It can only handle two numbers. I won't go into why, but for this reason a computer works out math by using base 2. For this reason, each binary digit represents a base of 2, which you will see in the short snippet of math below..
So... 4 bit binary numbers can represent decimal numbers in the range: (As explained before in the keywords, you can tell it is 4 bit, because there are 4 binary numbers..)
0000 = 0, to
1111 = 15. [2^3 + 2^2 + 2^1 + 2^0 = 15]
To represent larger decimal numbers requires more bits, e.g. a byte (8 bits) gives us a range:
00000000 = 0 to
11111111 = 255. [Do the maths like shown above for yourself but 8 times instead of 4]
Different number base systems
To save writing long strings of 1’s and 0’s, binary numbers can be expressed in a more compact form by simply choosing a base greater than 2. I.e.
Octal is base 8. This requires 8 digits or symbols 0,1,2,3,4,5,6,7
To convert a binary number to octal just split it into groups of 3 bits (starting from the right hand {least significant} end) and express each group by one of the above digits.
E.g the byte 10001110 groups as: 10 001 110
2 1 6 in octal form (often written 216 (to the base

)
The math behind this:
for the first group from the right: 110 = [2^2 + 2^1 + 0^0 = 6]
for the second group: 001 = [0^2 + 0^1 + 2^0 = 1]
for the last in group: 10 = [2^1 + 0^0 = 2]
So, now lets go on to hex, because that is what we are here for. 
Hexadecimal or 'Hex’ is base 16. This requires 16 digits or symbols 0,1,2,3,4,5,6,7,8,9, ? Now what ? We need 10,11,12,13,14,15 (but can't obviously because a computer handles 0-9..)
But that's noo problem: let A =10, B=11, C=12, D=13, E=14 and F=15
To convert a binary number to the very widely used hex notation just split it into groups of 4 bits (recall 4 bits can represent decimal numbers from 0 to 15) and express each group by one of the above digits.
E.g 1000 1110 an 8 bit binary number
8 E in hex form (sometimes written 8E16) or in software 8Eh or 0x8E[/color]
So there is hex notation.. I hope this will help some people understand their hex editor a little more. Like i said, this is only a very brief introduction to the topic, but i know i always used to hate working on something if i didn't even know what i was actually doing. So i guess, In conclusion, Hex is basically a way to express binary numbers in an easy way.
For more information on Hex editing, please refer to Schlumpf's take on it here:
viewtopic.php?f=48&t=611&p=4157&hilit=Hex+editing#p4157Please let me know if you see any mistakes or think something ought to be mentioned. Also, if anyone has any questions, ask here too ^^
Regards,
Will