Integer2String Covnersation

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Integer2String Covnersation

Allahbaksh Mohammedali Asadullah
Hi all,
Can any one explain How function integer2String works.


  public static int int2sortableStr(int val, char[] out, int offset) {

    val += Integer.MIN_VALUE;

    out[offset++] = (char)(val >>> 24);

    out[offset++] = (char)((val >>> 12) & 0x0fff);

    out[offset++] = (char)(val & 0x0fff);

    return 3;

  }



http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/util/NumberUtils.java?revision=555343&view=markup

Thanks in advance.
Regards,






**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely
for the use of the addressee(s). If you are not the intended recipient, please
notify the sender by e-mail and delete the original message. Further, you are not
to copy, disclose, or distribute this e-mail or its contents to any other person and
any such actions are unlawful. This e-mail may contain viruses. Infosys has taken
every reasonable precaution to minimize this risk, but is not liable for any damage
you may sustain as a result of any virus in this e-mail. You should carry out your
own virus checks before opening the e-mail or attachment. Infosys reserves the
right to monitor and review the content of all messages sent to or from this e-mail
address. Messages sent to or from this e-mail address may be stored on the
Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***
Reply | Threaded
Open this post in threaded view
|

Re: Integer2String Covnersation

Yonik Seeley-2-2
On Wed, Mar 11, 2009 at 9:54 AM, Allahbaksh Mohammedali Asadullah
<[hidden email]> wrote:
> Hi all,
> Can any one explain How function integer2String works.
>
>  public static int int2sortableStr(int val, char[] out, int offset) {
>
>    val += Integer.MIN_VALUE;

This maps MIN_VALUE to 0 and MAX_VALUE to 0xffffffff, making the bits
sort lexicographically the same as the full integer range.  It's the
same as flipping the sign bit.

>    out[offset++] = (char)(val >>> 24);
>    out[offset++] = (char)((val >>> 12) & 0x0fff);
>    out[offset++] = (char)(val & 0x0fff);

This chops up the bits to fit in char sized pieces to make a string,
avoiding invalid character ranges.

-Yonik
http://www.lucidimagination.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

RE: Integer2String Covnersation

Allahbaksh Mohammedali Asadullah

Hi,
I didn't get what exactly does shifiting 24 times and shifing 12 times does. Is there any Character at that value or is there some differenciator?
Can some one go in bit details.
Regards.

 
 

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Yonik Seeley
Sent: Wednesday, March 11, 2009 7:35 PM
To: [hidden email]
Subject: Re: Integer2String Covnersation

On Wed, Mar 11, 2009 at 9:54 AM, Allahbaksh Mohammedali Asadullah
<[hidden email]> wrote:
> Hi all,
> Can any one explain How function integer2String works.
>
>  public static int int2sortableStr(int val, char[] out, int offset) {
>
>    val += Integer.MIN_VALUE;

This maps MIN_VALUE to 0 and MAX_VALUE to 0xffffffff, making the bits
sort lexicographically the same as the full integer range.  It's the
same as flipping the sign bit.

>    out[offset++] = (char)(val >>> 24);
>    out[offset++] = (char)((val >>> 12) & 0x0fff);
>    out[offset++] = (char)(val & 0x0fff);

This chops up the bits to fit in char sized pieces to make a string,
avoiding invalid character ranges.

-Yonik
http://www.lucidimagination.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]


**************** CAUTION - Disclaimer *****************
This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely
for the use of the addressee(s). If you are not the intended recipient, please
notify the sender by e-mail and delete the original message. Further, you are not
to copy, disclose, or distribute this e-mail or its contents to any other person and
any such actions are unlawful. This e-mail may contain viruses. Infosys has taken
every reasonable precaution to minimize this risk, but is not liable for any damage
you may sustain as a result of any virus in this e-mail. You should carry out your
own virus checks before opening the e-mail or attachment. Infosys reserves the
right to monitor and review the content of all messages sent to or from this e-mail
address. Messages sent to or from this e-mail address may be stored on the
Infosys e-mail system.
***INFOSYS******** End of Disclaimer ********INFOSYS***

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Integer2String Covnersation

Yonik Seeley-2-2
On Wed, Mar 11, 2009 at 10:25 AM, Allahbaksh Mohammedali Asadullah
<[hidden email]> wrote:
> Hi,
> I didn't get what exactly does shifiting 24 times and shifing 12 times does. Is there any Character at that value or is there some differenciator?
> Can some one go in bit details.
> Regards.

That's just bit twiddling to slice up the integer into smaller pieces.
for example val>>>24 moves the top 8  bits of the 32 bit int into the
lowest 8 bits.

-Yonik
http://www.lucidimagination.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]