Mega Code Archive

 
Categories / Java / Data Type
 

Int To Long Compressor

//package com.myapp.util.cache.compress; public class IntToLongCompressor {          public static long pack(int x, int y) {         long xPacked = ((long)x) << 32;         long yPacked = y & 0xFFFFFFFFL;         return xPacked | yPacked;     }     public static int unpackX(long packed) {         return (int) (packed >> 32);     }     public static int unpackY(long packed) {         return (int) (packed & 0xFFFFFFFFL);     }     public static void main(String[] args) {         int x = -23664;         int y = -6543;         System.out.println("x=    "+Integer.toHexString(x));         System.out.println("y=    "+Integer.toHexString(y));         long pack = pack(x,y);         System.out.println("pack= "+Long.toHexString(pack));         int x2 = unpackX(pack);         System.out.println("x2=   "+Integer.toHexString(x2));         int y2 = unpackY(pack);         System.out.println("y2=   "+Integer.toHexString(y2));         testAll();     }     private static void testAll() {         long pack, iteration = 0;         int iTmp, jTmp;         for (int i = -100000; i <= 100000; i++) {             if (i % 100 == 0)                 System.out.println("i = "+i+ ", iterations = "+iteration);             for (int j = -100000; j <= 100000; j++, iteration++) {                 pack = pack(i, j);                 iTmp = unpackX(pack);                 jTmp = unpackY(pack);                 if (i != iTmp || j != jTmp) {                     throw new RuntimeException("i="+i+", j="+j);                 }             }         }     } }