On 11/22/06, Vincent Snijders <[EMAIL PROTECTED]> wrote:
ik schreef:
> On 11/22/06, Dominique Leducq <[EMAIL PROTECTED]> 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','D7920000 ')

But I need the range of 4 numbers and not the range of handrands of thousands.


>
> 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/
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to