>Hi Y'all,
>
>Trying to name a function correctly to put it into my library of functions. The following function was pulled from the UT and I want to rename it - but I don't exactly know what a DWORD is. Here is the function:
>
>
>FUNCTION buffer2dword(lcBuffer)
>
>RETURN ASC(SUBSTR(lcBuffer, 1,1)) + ;
> ASC(SUBSTR(lcBuffer, 2,1)) * 256 +;
> ASC(SUBSTR(lcBuffer, 3,1)) * 65536 +;
> ASC(SUBSTR(lcBuffer, 4,1)) * 16777216
>
>
>
>Looking up some definitions via Google, it says "double word" but in this case, it contains a numeric value. Why would they call it a "word" when it contains a number?
>
>Also, what would you call something that is stored as base 256 (the passed in string seems to be base 256). I was thinking of calling the above function 'StringToDWord' but 'string' is a bit ambigous. Note: if worrying about a function name seems 'anal', I have a large library of functions and I think it is important to name them correctly!
>
>Thanks,
>Albert Gostick
Albert,
A word is 2 bytes and dword is 4 bytes = 32 bits integer (quadword 8 bytes).
Passed in string is I bet a hex string. ie:
FF is 255
0100 is 256
FFFF is 65535
0D is 13 etc
In memory an 32 bits integer is stored as a sequence of 4 bytes (reverse order - low order,high order words). ie: "ABCD" is printable but if it stores an integer then its value is:
asc("A") * 256^0 +
asc("B") * 256^1 +
asc("C") * 256^2 +
asc("D") * 256^3
IOW above function could be:
FUNCTION buffer2dword(lcBuffer)
local lnValue
lnValue=0
for ix=1 to 4
lnValue = lnValue + asc(substr(m.lcBuffer,m.ix)) * 256^(m.ix-1)
endfor
return m.lcValue
You might call it Str2Int32, Str2Int, Dword2Num, C2Bin etc
Cetin