FAQ
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***

Search Discussions

  • Yonik Seeley at Mar 11, 2009 at 2:05 pm

    On Wed, Mar 11, 2009 at 9:54 AM, Allahbaksh Mohammedali Asadullah 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: java-user-unsubscribe@lucene.apache.org
    For additional commands, e-mail: java-user-help@lucene.apache.org
  • Allahbaksh Mohammedali Asadullah at Mar 11, 2009 at 2:26 pm
    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: yseeley@gmail.com On Behalf Of Yonik Seeley
    Sent: Wednesday, March 11, 2009 7:35 PM
    To: java-user@lucene.apache.org
    Subject: Re: Integer2String Covnersation

    On Wed, Mar 11, 2009 at 9:54 AM, Allahbaksh Mohammedali Asadullah
    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: java-user-unsubscribe@lucene.apache.org
    For additional commands, e-mail: java-user-help@lucene.apache.org


    **************** 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: java-user-unsubscribe@lucene.apache.org
    For additional commands, e-mail: java-user-help@lucene.apache.org
  • Yonik Seeley at Mar 11, 2009 at 2:30 pm

    On Wed, Mar 11, 2009 at 10:25 AM, Allahbaksh Mohammedali Asadullah 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: java-user-unsubscribe@lucene.apache.org
    For additional commands, e-mail: java-user-help@lucene.apache.org

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupjava-user @
categorieslucene
postedMar 11, '09 at 1:54p
activeMar 11, '09 at 2:30p
posts4
users2
websitelucene.apache.org

People

Translate

site design / logo © 2022 Grokbase