[fpc-devel] Efficient way to inc loop over hexadecimal values
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 -- http://ik.homelinux.org/ ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Efficient way to inc loop over hexadecimal values
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 ? ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Efficient way to inc loop over hexadecimal values
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 = D790 b = D792 As you can see the range differences between the decimals are way bigger then the hexa values. 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. So, I'm looking for a much faster and smarter way to do it, rather the bad way above. Ido -- http://ik.homelinux.org/ ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Efficient way to inc loop over hexadecimal values
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 = D790 b = D792 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 ('D790','D792 ') 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? 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? Vincent ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re[2]: [fpc-devel] Efficient way to inc loop over hexadecimal values
('3616538624','3616669696') and ('D790','D792 ') If I get it right, you can translate borders (a and b: strings in some formats) to numbers (x and y) and do something like for i:=x to y do begin // many bad and good things end; If the numbers are supposed to be in some special order (e.g. mix of 1-4 bytes long UTF-8 codes), you are too vague. ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Efficient way to inc loop over hexadecimal values
ik wrote: 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 = D790 b = D792 As you can see the range differences between the decimals are way bigger then the hexa values. 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. So, I'm looking for a much faster and smarter way to do it, rather the bad way above. Something like this? for I := $D790 to $D792 do YourValue := I * $1; Otherwise, if I didn't get what you mean, perhaps you can use some boolean arithmetic. -- Joao Morais ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] Efficient way to inc loop over hexadecimal values
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 = D790 b = D792 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 ('D790','D792 ') 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 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
Re: [fpc-devel] Efficient way to inc loop over hexadecimal values
On Wed, 22 Nov 2006 16:56:04 +0200 ik [EMAIL PROTECTED] wrote: 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 = D790 b = D792 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 ('D790',' ') But I need the range of 4 numbers and not the range of handrands of thousands. There are far more than 4 numbers between D790 and D792, and as much as between 3616538624 and 3616669696. 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 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
Re: [fpc-devel] Efficient way to inc loop over hexadecimal values
On 11/22/06, Dominique Leducq [EMAIL PROTECTED] wrote: On Wed, 22 Nov 2006 16:56:04 +0200 ik [EMAIL PROTECTED] wrote: 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 = D790 b = D792 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 ('D790',' ') But I need the range of 4 numbers and not the range of handrands of thousands. There are far more than 4 numbers between D790 and D792, 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 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/ ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel