}
public int byteArrayToInt(byte [] b) {
- int val;
- val = b[0] << 24 + ((b[1] & 0xFF) << 16) + ((b[2] & 0xFF) << 8) + (b[3] & 0xFF);
- return val;
+ int value = 0;
+ for (int i = 0; i < 4; i++) {
+ int shift = (4 - 1 - i) * 8;
+ value += (b[i] & 0x000000FF) << shift;
+ }
+ return value;
}
+ /*
+ public int byteArrayToInt(byte [] b) {
+ int val;
+ val = b[0] << 24 + ((b[1] & 0xFF) << 16) + ((b[2] & 0xFF) << 8) + (b[3] & 0xFF);
+ return val;
+ }
+ */
+
public static int parseInt(String str) {
return Integer.parseInt(str, 10);
}
byte b=chars[i];
int val;
if (b>='0'&&b<='9')
- val=b-'0';
+ val=b-'0';
else if (b>='a'&&b<='z')
- val=10+b-'a';
+ val=10+b-'a';
else if (b>='A'&&b<='Z')
- val=10+b-'A';
+ val=10+b-'A';
else {
- cont=false;
+ cont=false;
}
if (cont) {
- if (val>=radix)
- System.error();
- value=value*radix+val;
+ if (val>=radix)
+ System.error();
+ value=value*radix+val;
}
}
if (isNeg)
return false;
return true;
}
+
+ public int compareTo(Integer i) {
+ if (value == i.value)
+ return 0;
+ // Returns just -1 or 1 on inequality; doing math might overflow.
+ return value > i.value?1:-1;
+ }
+
+ public static int bitCount(int x) {
+ // Successively collapse alternating bit groups into a sum.
+ x = ((x >> 1) & 0x55555555) + (x & 0x55555555);
+ x = ((x >> 2) & 0x33333333) + (x & 0x33333333);
+ x = ((x >> 4) & 0x0f0f0f0f) + (x & 0x0f0f0f0f);
+ x = ((x >> 8) & 0x00ff00ff) + (x & 0x00ff00ff);
+ return ((x >> 16) & 0x0000ffff) + (x & 0x0000ffff);
+ }
+
+ public static int numberOfLeadingZeros(int value) {
+ value |= value >>> 1;
+ value |= value >>> 2;
+ value |= value >>> 4;
+ value |= value >>> 8;
+ value |= value >>> 16;
+ return bitCount(~value);
+ }
+
+ /**
+ * Returns an <code>Integer</code> object wrapping the value.
+ * In contrast to the <code>Integer</code> constructor, this method
+ * will cache some values. It is used by boxing conversion.
+ *
+ * @param val the value to wrap
+ * @return the <code>Integer</code>
+ */
+ public static Integer valueOf(int val)
+ {
+ //if (val < MIN_CACHE || val > MAX_CACHE)
+ return new Integer(val);
+ /*else
+ return intCache[val - MIN_CACHE];*/
+ }
}