FUNCTION HexToBinary(cHex)
LOCAL nLenBin, nX, nPos, cBinNumber, cCharHex, cBinBase
aHexBinary := { {"0", "0000"}, {"1", "0001"}, {"2", "0010"}, {"3", "0011"}, {"4", "0100"}, {"5", "0101"},;
{"6", "0110"}, {"7", "0111"}, {"8", "1000"}, {"9", "1001"}, {"A", "1010"}, {"B", "1011"},;
{"C", "1100"}, {"D", "1101"}, {"E", "1110"}, {"F", "1111"}}
cBinNumber := ""
cHex := alltrim(cHex)
FOR nX := len(cHex) TO 1 STEP -1
cCharHex := substr(cHex, -nX, 1)
nPos := ascan(aHexBinary, { |a| a[1] == substr(cHex, -nX, 1)} )
cBinBase := aHexBinary[nPos,2]
cBinNumber := cBinNumber + cBinBase
NEXT
RETURN (cBinNumber)