[fpc-devel] Efficient way to inc loop over hexadecimal values
ik
idokan at gmail.com
Wed Nov 22 16:28:39 CET 2006
On 11/22/06, Dominique Leducq <dleducq at magellan-ing.fr> wrote:
> On Wed, 22 Nov 2006 16:56:04 +0200
> ik <idokan at gmail.com> wrote:
>
> > On 11/22/06, Vincent Snijders <vsnijders at quicknet.nl> wrote:
> > > ik schreef:
> > > > On 11/22/06, Dominique Leducq <dleducq at magellan-ing.fr> wrote:
> > > >> ik a écrit :
> > > >> > Hi List,
> > > >> >
> > > >> > I have two cardinal numbers that represent ranges.
> > > >> >
> > > >> > The 10 base value of that two variables are useless and far from
> > > >> > having any meaning for my needs.However the hexa number does have
> > > >> > meaning after I'm changing the network order (aka big endian).
> > > >> >
> > > >> > I can think on many non efficient ways to while loop with inc but not
> > > >> > even one way to inc it in an efficient way.
> > > >> >
> > > >> > So, I'm looking for an efficient way to loop from left range to right
> > > >> > range when the values are in Hexa-decimal.
> > > >> >
> > > >> > Thank you for any help on this matter,
> > > >> >
> > > >> > Ido
> > > >>
> > > >> I'm afraid I don't understand your problem. Decimal or hexadecimal are
> > > >> string representation formats, cardinal and integer values are stored
> > > >> and dealt with internally in binary form !
> > > >> If your values are hexadecimal number stored in strings, why not convert
> > > >> them first to Cardinal ?
> > > >>
> > > >> Could you perhaps give an example or be more precise ?
> > > >
> > > > OK, I have (for this example, taken from my own testing) the following
> > > > numbers:
> > > > Decima numbers: a = 3616538624 b = 3616669696
> > > > The hexa values are: a = D7900000 b = D7920000
> > > >
> > > > As you can see the range differences between the decimals are way
> > > > bigger then the hexa values.
> > >
> > > The numerical difference is the same. The difference seems larger if you are
> > > speaking about the string represetations of these 32 bits numbers
> > > ('3616538624','3616669696') and ('D7900000',' ')
> >
> > But I need the range of 4 numbers and not the range of handrands of thousands.
>
> There are far more than 4 numbers between D7900000 and D7920000, and as much as between 3616538624 and 3616669696.
/me Blush
I can see that now... I need to do something with my eyes.... :)
Finally I understand what I did wrong, and how to solve this ...
Thank you for pointing the obvious (not for me :( ) for me :)
/me going to crawl now to some place ...
> Or what are you calling numbers ? Digits ?
> I suggest you give us a sample of what values your loop counter may take, and in what order.
>
> >
> > >
> > > >
> > > > The thing is that the hexa numbers represent chars of a UTF-8
> > > > encoding. D790 is the char "א".
> > > > (http://www.utf8-chartable.de/unicode-utf8-table.pl look for Hebrew).
> > > >
> > > > So I wish to run on the range between a..b (in Hexa) and to have all
> > > > of the values in between.
> > > >
> > > > There are many bad ways to do it such as:
> > > >
> > > > while (not hexStr (i) = b) do
> > > > begin
> > > > ...
> > > > inc (i)
> > > > ....
> > > > end;
> > > >
> > > > This exampel does not cover all the possible values I might need.
> > >
> > > Why not?
> >
> > It seems to be good only for "basic" ranges... I'm creating a function
> > that you can give a start range and end range, and it return all of
> > the chars on that range. so I do not know if I'll place the first 97
> > letter up to the FFFF letter, that this loop will work well, or fast
> > enough.
> >
> > >
> > > >
> > > > So, I'm looking for a much faster and smarter way to do it, rather the
> > > > bad way above.
> > >
> > > Do you want to operate on strings or on numbers or on somthing else?
> >
> > I prefer numeric handing then string handling.
> >
> > >
> > > Vincent
> >
> > Ido
> > --
> > http://ik.homelinux.org/
>
Ido
--
http://ik.homelinux.org/
More information about the fpc-devel
mailing list