Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
What exactly is a
Message
De
23/11/2004 17:26:01
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
 
 
À
23/11/2004 16:40:17
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Database:
Visual FoxPro
Divers
Thread ID:
00964046
Message ID:
00964062
Vues:
12
This message has been marked as the solution to the initial question of the thread.
>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
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform